C++有个地方算不懂,帮忙看下

来源:百度知道 编辑:UC知道 时间:2024/06/07 01:43:37
mian()
{
int x=2,y,z;
y=(++x)+(x++)+(++x);
z=(x--)+(--x)+(x--);
printf("x=%d\ny=%d\nz=%d\n",xyz);
}
结果 X=2 Y=12 Z=12 我怎么想不明白 我算的结果是 Y=12 Z=11 。。。

main()
{
int x=2,y,z;
y=(++x)+(x++)+(++x);
z=(x--)+(--x)+(x--);
printf("x=%d\n y=%d\n z=%d\n",x,y,z);
}
答案是x=2,y=10,z=12:运算是这样的
<1> y=(++x)+(x++)+(++x);中,++x是调用自增后的值,x++是调用自增前的值,这里x自增了三次,所以y=5+2+5=12;
<2> z=(x--)+(--x)+(x--); 中,x--调用自减前的值5,--x调用三次自减后的值2.所以z=5+2+5=12;

这是一般的C语言编译器,有的C语言编译器求得的数不同,那时就要自己试着掌握规律了.

(++X)和(X++)不一样。一个是三,一个是四。

我在VC++6.0和DEV-C++上测试下来都是
x=2
y=10
z=12
不知道你用的是什么编译器
y=(++x)+(x++)+(++x);
z=(x--)+(--x)+(x--);
这两句话可能有编译器依赖性,应该避免在一个语句中使用多个对同一变量有赋作用的表达式。

/*
TC先把++ --在前的计算,然后算表达式,最后算++ --在后的。分解给你看
*/
mian()
{
int x=2,y,z;
++x;//x=3
++x; //x=4
y= x + x + x;/y=12
x++; //x=5
--x;//x=4
z= x + x + x;//z=12
x--;//x=3
x--; //x=2
printf("x=%d\ny=%d\nz=%d\n",xyz); //这句是不是错了?
//应该是printf("x=%d\ny=%d\nz=%d\n",x,y,z