
正文
c语言输出函数自增 c语音的输出函数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言的自增自减问题
计算:从右往左,并输出到“缓冲区”。
1、缓冲区是一堆栈
2、第一步:处理后面的“i--”。8进入缓冲区,i=7。缓冲区:8 -(指针)
第二步:处理“i++”。7进入缓冲区,i=8。缓冲区:7 8-
第三步:处理”--i“。8进入缓冲区,i=7.缓冲区:8 7 8
第四步:处理“++i” 先自增1,然后8进入缓冲区,i=8 .缓冲区: 8 8 7 8
3、输出缓冲区数据(栈规则):8 8 7 8
另外自增 、自减 、还可能和编译器有关系 。
扩展资料:
后缀表达式 2级
postfix-expression [ expression ],数组下标运算。
postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。
postfix-expression . identifier,成员访问,
postfix-expression - identifier,成员访问,-号之前应为指针。
postfix-expression ++,后缀自增
postfix-expression --,后缀自减
( type-name ) { initializer-list }
( type-name ) { initializer-list , } 复合初始化,C99后新增。
参考资料:百度百科-C语言运算符
相关问答
Q1: C语言自增自减的输出问题
printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,++i,--i,++i,++i,-i++,-i--);
右边参数集i,++i,--i,++i,++i,-i++,-i-- 是从最右边开始入栈的,也就是先执行最右边的表达式。
-i-- 表达式的值为-i,也就是-8,然后i--使得i的值更新为7
-i++ 此时i的值为7,表达式的值为-i,也就是-7,然后执行i++使得i更新为8
++i 此时i的值为8,先执行++i使得i值变为9,表达式的值为自加后i的值也就是9
++i 此时i的值为9,先执行++i使得i值变为10,表达式的值为自加后i的值也就是10
--i 此时i的值为10,先执行--i使得i值变为9,表达式的值为自加后i的值也就是9
++i 此时i的值为9,先执行++i使得i值变为10,表达式的值为自加后i的值也就是10
i 此时i的值为10
原输出语句应该输出10 10 9 10 9 -7 -8
我在C++Builder2010下测试是如此。
一般的,大部分C语言编译器处理函数中参数入栈都是从右往左的。你说的VC6下的测试结果,倒数第二个人是-8,这样的情况我也觉得奇怪。
而在VC2008下测试的结果则是:10 10 10 10 10 -7 -8
也许有编译配置参数可以设置,来改变编译效果。
Q2: C语言自增运算符
(1)printf("%d", i++); 后缀c语言输出函数自增,表达式里用 i, 出了表达式 自增1,故,分解为: printf("%d", i); i=i+1;
(2) printf("%d", ++i); 前缀,先自增,后用于表达式,故,分解为: i=i+1; printf("%d", i);
(3)(4) 同理,printf("%d", i--); 分解为:printf("%d", i); i=i-1;
printf("%d", --i); 分解为: i=i-1; printf("%d", i);
把分解后c语言输出函数自增的语句组合起来,就可看出,输出为 40 42 42 40
Q3: C语言里的自增函数
举个比较容易懂的例子。如a=M++;那么a=M,M=M+1。M=3时,a=3,M++为4,即M=M+1=4。
你刚才问的解答一下
a=x++; a=x=3,x=x+1=1+3=4;
b=x++; b=x=4,x=x+1=4+1=5;
c=x++; c=x=5,x=x+1=5+1=6;
故 x=6,m=a+b+c=3+4+5=12。
c语言输出函数自增的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语音的输出函数、c语言输出函数自增的信息别忘了在本站进行查找喔。






