问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中的printf("%d,%d,%d\n",z++,++z,z++);问题

发布网友 发布时间:2024-10-22 18:20

我来回答

2个回答

热心网友 时间:2024-10-22 19:09

楼主我和你的编译器结果是一样的。
关于这个问题的结果,本身就是和编译器有关的。
首先,不管怎样,计算结果都是从右往左(这和函数的参数压栈有关)。
只不过有些编译器是严格的按照从右往左计算,因此它们的结果是5,5,3.但是也有一些编译器不怎么老实,比如我和楼主的,像我们这样的编译器,凡是带前置自增运算符都会在最后被赋值(虽然依然会从左往右计算它)。
就拿这个问题来分析,首先计算最后一个z++,得到结果3,并立即赋值给这个参数;接着是第二个++z,会被计算得到结果5,但是不会被赋值;接着是第一个,得到结果5。所有的计算都结束后,第二个参数才会被赋值,因此得到结果6。所以最终结果是5,6,3。

楼主你可以试试这段语句:
int z = 3;
printf("%d %d %d\n", ++z, ++z,++z);
在你的编译器上最终结果会是6 6 6,因为从右往左计算,但是凡是带前置自增运算符的都会在最后被赋值。

同样地:
int z = 3;
printf("%d %d %d\n", ++z, ++z,z++);
这段语句的结果会是6 6 3,因为最后一个参数不会等到最后再赋值,而前两个会。

总之不管怎样,这种写法都是很不好的,楼主尽量少采用。

热心网友 时间:2024-10-22 19:13

我的编译器上是5 5 3,你反汇编一下看看。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
武汉大学在职研究生考试科目有哪些 报考武汉大学在职研究生录取率高吗? 武汉大学mpa在职研究生好考吗 忘记车子买哪家保险 怎么查 67年的羊和什么生肖最配夫妻 67年的羊和69年鸡相配吗? 67年羊男与69年鸡女同是11月出生婚配如何? 67年9月和69年十月的结婚 “新菊亦侵篱”的出处是哪里 “闲绕篱头看菊花”的出处是哪里 澳思柏恩哪款Fosb板比较不错? 澳思柏恩有几款Fosb板?品质怎么样? 澳思柏恩哪款Fosb板更适合用来当门墙板? 澳思柏恩有哪些Fosb板产品? 澳思柏恩Fosb板品质怎么样? 澳思柏恩Fosb板品质怎么样?值得选择吗? 澳思柏恩最新推出的Fosb板是哪款? 澳思柏恩Fosb板怎么样?好不好? 澳思柏恩Fosb板的性能怎么样? 高二学生学习状态差,应该怎样调整? ...好的办法或是好的补习机构能帮助他从心理进行疏导后辅导。 我要给我女儿取个4个字的名字, 我姓:施,老婆姓:周, 请大家帮忙想想_百 ... 帮女儿取名字,姓施,三个字的,要另类一点的 帮我女儿取个名字,姓施,2008年7月3日出生的,小家伙比较活泼的 谁有Microsoft Publisher的安装软件程序? 有追加分哦! 南宁八桂田园7 月份的景色怎么样? 八桂村烹制材料 南宁八桂田园详细介绍 八桂村属于哪里 八桂风情地址在哪里? 澳思柏恩实木切片OSB板具有哪些优势? 澳思柏恩OSB板值得选择吗? C语言中自反赋值运算的优先级:printf("%d\n",i+=i*=j);中的运算顺序和... c语言问题,下面printf中为什么一个要加* ,一个不用加 在c语言中int a=5;printf("%d %d",++a,a++);答案是6 和5,为什么不是6... 澳思柏恩OSB板怎么样?值不值得选择? c语言如何封装printf函数? 韩国哪个牌子水乳好 乐山市幼师学校有哪些 有特殊教育专业的大学有哪些 ...现在电脑一开机就提示SQL Server could not find the d 多发性硬化和脑白质脱髓鞘的区别 多发性硬化和脱髓鞘哪个严重? 《神武3》变身卡合成方法介绍介绍_《神武3》变身卡合成方法介绍是什么... 神武合卡最大值 脱髓鞘与多发性硬化是不是关联病? 脱髓鞘病多发性硬化症 脑脱髓鞘改变是什么 脱髓鞘病变怎么治疗 三星i7500和索爱u5哪个好?用过的朋友说一下亲身体会给个意见,谢谢啦