各位C语言高手 这个C语言程序是不是要这样理解

来源:百度知道 编辑:UC知道 时间:2024/05/10 13:58:33
#include<stdio.h>
void main()
{int p,q;
int x=8,y=8;
p=(x++)+(x++)+(x++);
q=(++y)+(++y)+(++y);
printf("%d,%d,%d,%d\n",p,q,x,y);
}
运行结果为:
24,33,11,11

在引用的时候x++都引用为8 而++y的引用却是引用为11 但这是为什么呢? 谁能解释解释

这涉及到++y与 x++的优先级问题。
++y是先给y加1,然后再参加其他的运算,在q=(++y)+(++y)+(++y)中,自然是先进行三次加一操作,变成11,再做和,结果是33.
x++是先取x参加运算后,再加1.所以p=(x++)+(x++)+(x++)的结果是24,然后x进行了三次加1操作,变成了11.

晕,一个是先+后运行,一个是先运行后+啊,自己慢慢理解吧,运算都是从右往左执行的.

编译器实现相关

X++是先运算,后加1;++Y是先加1,在运算
P=3X,x加1三次,()优先级高。
先++y,然后p=3y;