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语言运算符
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
我在CBuilder2010下测试是如此 。
一般的,大部分C语言编译器处理函数中参数入栈都是从右往左的 。你说的VC6下的测试结果,倒数第二个人是-8,这样的情况我也觉得奇怪 。
而在VC2008下测试的结果则是:10 10 10 10 10 -7 -8
也许有编译配置参数可以设置,来改变编译效果 。
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
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语言输出函数自增的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语音的输出函数、c语言输出函数自增的信息别忘了在本站进行查找喔 。
推荐阅读
- 松下平板怎么接移动硬盘,松下平板怎么接移动硬盘视频
- 恐龙为什么不能看电视,恐龙为什么不能看电视剧
- 白色旗袍书中角色扮演游戏,白色旗袍造型
- pdf如何筛选空白页,pdf如何筛选空白页数
- go语言如何打开本地网页 go语言网页开发
- 武器下载,csgo奇葩武器下载
- java优惠券代码生成器,java实现优惠券功能
- 钉钉直播有贴纸吗,钉钉直播有贴纸吗怎么弄
- pythonlt函数 python中lt方法