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

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/03 22:21:10
C语言中,m=0 A=(++m)+(++m); 此时,A=?,在VC中运行了,结果是A=4,m=2.一直想不明白为什么.
xŒN@_K4`;̄wp{ hB 'JiC$!@M}sWph5q,d27;gdRYxSj$U `j[`]%Vtn_TUe  *a}=i#'vZ $FFxxKlm6-Le]P͉͆m3Eu*]Z\6d;UźdITdY̻ilPV) ub6[\eFͮxnS B H~tᛥ!h S.IdW~g2+Rd16Z娴6vm

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));