一个关于C语言自增++运算的题目,高手进

来源:百度知道 编辑:UC知道 时间:2024/05/17 06:16:31
main()
{
int x=2,y,z;
y=(++x)+(x++)+(++x);
z=(x--)+(--x)+(x--);
printf("x=%d,y=%d,z=%d\n",x,y,z);
}运行结果为什么不是x=2,y=11,z=11
我的预测是y=3+3+5=11
但是答案是x=2,y=12,z=12
请详细讲解好吗?
我用的是Turbo C/C++ for Windows集成实验环境安装文件,我很同意
“根据编译器而不同,
在你的编译器中应该是这样执行的:
y=(++x)+(x++)+(++x);
因为第二个(x++)有括号,所以就求解x++再执行括号外面的+,结果也就是3+4+5=12
在VC中就不同
回答者:jinesln - 助理 二级 3-13 14:33”的回答,但可以再详细一点吗?

根据编译器而不同,
在你的编译器中应该是这样执行的:
y=(++x)+(x++)+(++x);
因为第二个(x++)有括号,所以就求解x++再执行括号外面的+,结果也就是3+4+5=12
在VC中就不同

真的假的 兄弟 你在程序里运行试了么?
我感觉你的应该是对的啊

我在Vc6.0里运行的结果是x=2,y=10,z=12

我在linux下也是x=2,y=10,z=12

谭浩强的《C语言程序设计》中有个例子,大致是说不同的系统处理int i=3;printf("%d,%d,%d",i++,i++,i++)的方法不同,有的输出是3,4,5,有的输出3,3,3。我用的是Microsoft Visual C++ 6.0,按照后者输出。

对于你的问题,系统可能是将++x处理为3,后面的++x不变化,即3+4+3=10

main() { int x=2,y,z; y=(++x)+(x++)+(++x); z=(x--)+(--x)+(x--); printf("x=%d,y=%d,z=%d\n",x,y,z); }/*首先,给你说明的同时,也是我的一次再学习。0.对于每个编译平台都会对这个++运算有不同的处理.对于:Turbo C 2.0的系统下:1.说明一下,这应该属于应试教育的产物,实际的开发可要挨骂的!2.可以这样做实验(1)代码:main(){int x=2,y=0;y=(++x)+(x++);/*y=?,而以运算后,x=?*/printf("x=%d,y=%d\n",x,y);}(2)把你的代码丝毫不改的放到Dev-cpp4.9.9.2的环境下运行:你预测一下结果是什么???你肯定想不到的!看图:

一个关于C语言自增++运算的题目,高手进 c语言自增运算 C语言自增运算的问题,谢谢! c语言运算符自增 C语言中自增运算问题 C语言问题!!!!关于自加和自减运算 新手C语言问题,望大家指点指点(关于自增自减运算F) C语言中~自加自减运算的问题 c语言中 自增 自减运算符 关于C的自增运算符的又一个疑惑!!