我不明白为什么会输出这样的结果.
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/07 23:53:39
我不明白为什么会输出这样的结果.
#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
#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;
把它编译成汇编就明白了.
编译器处理加法时,两个两个的相加.
即先计算两次y++,然后q=y+y=20,
最后q=q+ (++y) = 31
如果出现四个++y,q=(++y)+(++y)+(++y)+(++y);
则q=10+10+11+12;