早教吧 育儿知识 作业答案 考试题库 百科 知识分享

我不明白为什么会输出这样的结果.#includemain() {int p,q;int x=8,y=8;p=(x++)+(x++)+(x++); q=(++y)+(++y)+(++y); printf("%d,%d,%d,%d",p,q,x,y);}输出结果为:24,31,11,11

题目详情
我不明白为什么会输出这样的结果.
#include
main()
{
int p,q;
int x=8,y=8;
p=(x++)+(x++)+(x++);
q=(++y)+(++y)+(++y);
printf("%d,%d,%d,%d",p,q,x,y);
}
输出结果为:
24,31,11,11
▼优质解答
答案和解析
q=(++y)+(++y)+(++y);
把它编译成汇编就明白了.
编译器处理加法时,两个两个的相加.
即先计算两次y++,然后q=y+y=20,
最后q=q+ (++y) = 31
如果出现四个++y,q=(++y)+(++y)+(++y)+(++y);
则q=10+10+11+12;