printf()运算问题

来源:2-9 代码编写为什么要遵从一定的规范?

LoongDB

2021-05-16

http://img.mukewang.com/szimg/60a0f4a309c84f7a10380400.jpg

http://img.mukewang.com/szimg/60a0f4c3096d42d114120785.jpg

老师,这个运行结果怎么不是4,5,2呀!居然是8,8,2,有点不明白是怎么算出来的

写回答

2回答

LoongDB

提问者

2021-05-16

这是一个练习题上面的,我用的MinGW编译器

0
1
bennyhuo
你换msvc看看有没有惊喜
2021-05-16
共1条回复

bennyhuo

2021-05-16

换个编译器就有可能不一样。涉及到表达式的求值顺序的问题,自己写代码千万不要这么写。

0
2
bennyhuo
回复
LoongDB
很多编译器求值都是从后往前的,所以不奇怪。 先 i++,取当前值2,然后i改为3, 再++i,i成为3,由于这里传参传的是i,所以也受到了 i *= 2的影响,参数全部求值完成以后 相当于传参 i, i, 2,而 i已经是8了。 但这没啥意义,谁敢在项目里这么写代码,一定会被揍的。
2021-05-16
共2条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程