请帮我看一段c语言代码,运行结果怎么得到的

来源:百度知道 编辑:UC知道 时间:2024/05/30 11:22:01
#include<stdio.h>
main()
{int i=5,q;
q=(++i)+(++i)+(++i);
printf("q=%d\n",q);
}
为什么运行的值q=22,怎么得到的呀?
我用的devc++编写的程序
我用devc++调试了,答案输出为22

结果是和编译器有关的。在Turbo C中,结果为24。
而在devc++,vc++中,编译器从左至右求值,因此系统先求第一个++i,此时+号还需要一个操作数,接着求+号之后的++i,此时i=7,再执行相加,接着执行++i,i=8,最后相加结果就为22。
而i++的运算是在计算总表达式之后进行的。
以下的例子可以说明这些情况:
i=5;
q=(++i)+(++i),结果为14;
q=(i++)+(++i), 结果为11;
q=(++i)+(i++), 结果为12。

这个和你的编译工具有关