注册 登录
编程论坛 C语言论坛

初来乍到的小萌新,望各路高手多多相助。有个问题想请教大佬们。

涛声依旧了 发布于 2020-02-03 19:14, 947 次点击
#include <stdio.h>
void main()
{
   int i=5,j=5,p,q;
   p=(i++)+(i++)+(i++);
   q=(++j)+(++j)+(++j);
   printf("%d,%d,%d,%d\n",p,q,i,j);
}
只有本站会员才能查看附件,请 登录


想问一下,那个图中的22是怎么来的?
万分感谢
2 回复
#2
纯蓝之刃2020-02-03 19:43
你这个题实际是没有什么太大的意义的,实际上没有人会在正常使用中这样使用变量的,如果非要说,按照正常来看的话结果应该是15,24,8,8.
但是如果编译器遵循新的c++标准,代码都是++j三次做完之后统一对三个操作数做了两次+运算,这样3个数的和是24,
如果编译器遵循老的c++标准,做了两次++j之后做的前两个操作数的+运算,然后又做的++j,然后再做的第二次加法,这样3个数的和是22。
https://bbs.
#3
涛声依旧了2020-02-03 21:48
回复 2楼 纯蓝之刃
非常感谢您的帮助!
1