答案与编译器品种有关,与编译时的优化处理有关。
如果作 优化处理,VC++ 编译器 /O2 (最大速度)或 /O1 优化 或 /Og 优化, 得 j=24
计算方法 huidouer 已详细说明。
VC++ 编译器 不优化 (默认方法)/Od
得 j=22
手算:
int i=3,j=(++i)+(++i);j=(++i)+(++i)+(++i);
第一个 ++i 是 4,第二个 ++i 是 5
第三个 ++i 是 6,第四个 ++i 是 7
第五个 ++i 是 8,
j=第三个+ 第四个 + 第五个 = 6+7+8 = 21
------------
说明什么呢, 说明 不要用 C 语言中 前加加 后加加 这种 模棱两可 含义不清的 东西 于 表达式中。
j=(++i)+(++i)+(++i);
例如可以写成 k = i+1; j = k+k+k; 看编程人的目的到底是想计算什么。
j=24
++i先给i赋值,再进行运算。
int i=3;
j=(++i)+(++i);
第一个++i,i=4
第二个++i,i=5
j=5+5=10
j=(++i)+(++i)+(++i);
这时的i=5
第一个++i,i=6
第二个++i,i=7
第三个++i,i=8
j=8+8+8=24
21
22,vc++运算得出的!