C语言中,m=0 A=(++m)+(++m); 此时,A=?,在VC中运行了,结果是A=4,m=2.一直想不明白为什么.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 13:08:23
C语言中,m=0 A=(++m)+(++m); 此时,A=?,在VC中运行了,结果是A=4,m=2.一直想不明白为什么.

C语言中,m=0 A=(++m)+(++m); 此时,A=?,在VC中运行了,结果是A=4,m=2.一直想不明白为什么.
C语言中,m=0 A=(++m)+(++m); 此时,A=?,
在VC中运行了,结果是A=4,m=2.一直想不明白为什么.

C语言中,m=0 A=(++m)+(++m); 此时,A=?,在VC中运行了,结果是A=4,m=2.一直想不明白为什么.
这个和编译器自身处理过程有关系,不同的编译器,结果不尽相同,不必过于纠结.
比如
A = (++a) + (++a) + (++a);
有些编译器会先计算右边,最后赋值给A:++a;++a;++a;A=a+a+a;
有些编译器实际的过程变成:A=++a; A=A+(++a);A=A+(++a);
有些编译器实际的过程变成:A=(++a)+(++a); A=A+(++a);
有些编译器实际的过程变成:A=(++a); A=A+((++a)+(++a));