c语言中为什么inti=5;p=(++i)+(++i)+(++i);printf("%d",p)的

2022-03-22 科技 82阅读
怎么会呢?它们是前缀增1符,先增1再运算,先做两次++i,i就成7了;从左至右计算,把前两个式子加起来放在一个临时变量中,比如A中,它就等于14;然后再与第三个式子相加,i又要增1成为8,可是这一次不能给A增了,所以是14+8=22。不过这与你使用的编译器有关,有些编译器可能会计算出24来——那是因为有些编译器先把所有的增1去做完再相加,不就是3x8=24了。所以不要用这种边缘化语法写代码。不过你的6+7+8的理解是什么样的编译器都不会做出来的,因为前缀增1是要在运算前执行,前两项中是同一个变量i,怎么做完会是一个6一个7呢?
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com