请教C中自增运算的问题。

发布时间:2024-05-21 10:09 发布:上海旅游网

问题描述:

int j=2;
j=(j++)+(++j);
为什么j=7啊?
但是如果改成m=(j++)+(++j);
得到m=6呢?
main()
{int m,j=2;
j=(j++)+(++j);
printf("%d",j);}

我运行了,还是7啊?

问题解答:

一、
int j = 2;
j = ( j ++ ) + ( ++ j );
为什么j = 7啊?

答:变量j=6,鄙人已经运行过了,对于过程实在不好说明
其中,自增运算符“++”是一个自右向左的运算符,
运算中 j = ( j ++ ) + ( ++ j ) 转化为 j = 2 + 4;
进行 加法 运算后才经行 j ++,此时 j = 3,
而后经行( ++ j ),此后j = 4;

二、
但是如果改成m = (j ++ ) + ( ++ j );
得到m = 6呢?
答:m = 6 ,鄙人也运行过了。

QQ 631496417

这种问题就不要拿上台面了。c++标准没有规定。不同编译器可能出现不同的结果。

6

热点新闻