急,这个c语言程序的结果为什么是这样呀!

来源:百度知道 编辑:UC知道 时间:2024/05/14 16:22:25
main()
{
int i=3;
printf("%d %d\n",(i++)+(i++)+(i++),i);
printf("%d %d",-i++,-(i++));
}
结果为:12 3
-7 6
这是什么原因呀,哪位高手能告诉我呀?
在truboc2.0 和3.0中均为12 3
-7 -6
而不是你们说的12 6
还有第二行的为为啥先输出-7而不是呀?

不同编译器对printf中的表达式计算顺序不一样的,
int i=3;
printf("%d %d\n",(i++)+(i++)+(i++),i);
显然是先计算后面的’i',然后计算'(i++)+(i++)+(i++)',

#include "stdio.h"
void main()
{
int i=3;
printf("%d %d\n",(i++)+(i++)+(i++),i);
printf("%d %d",-i++,-(i++));
}

输出为:
9 3
-6 -6

这个是运算式在 PRINTF语句中了 你按照运算式 带下数就出来了 还有你 这题没抄错么`!~?

"++"操作符在变量i后是先输出,在++.所以(i++)+(i++)+(i++)是3+4+5这时i=6
所以是12,输出的i应该等于6,"-i++"等于-6,-(i++)等于-7.我把你这个重新输出一次,就是我这个结果,你在看看是不是抄错了!!如果不是,我就帮不了你了.呵呵!!