一个C语言的问题: int i=3,k; k=(++c)+(++c)+(++c); 最后k怎么等于16呢?求分析!sorry 一疏忽错了,之前应该int c=3而不是int i. 各位原谅.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 06:54:03
一个C语言的问题: int i=3,k; k=(++c)+(++c)+(++c); 最后k怎么等于16呢?求分析!sorry 一疏忽错了,之前应该int c=3而不是int i.   各位原谅.

一个C语言的问题: int i=3,k; k=(++c)+(++c)+(++c); 最后k怎么等于16呢?求分析!sorry 一疏忽错了,之前应该int c=3而不是int i. 各位原谅.
一个C语言的问题: int i=3,k; k=(++c)+(++c)+(++c); 最后k怎么等于16呢?求分析!
sorry 一疏忽错了,之前应该int c=3而不是int i. 各位原谅.

一个C语言的问题: int i=3,k; k=(++c)+(++c)+(++c); 最后k怎么等于16呢?求分析!sorry 一疏忽错了,之前应该int c=3而不是int i. 各位原谅.
下面的答案出自《c语言深度解剖》,我验证了VC2005的,是18;
有点编译器计算出来为18,因为i 经过3 次自加后变为6,然后3 个6 相加得18;
有的编译器计算出来为16(比如Visual C++6.0),先计算前两个i 的和,这时候i 自加两
次,2 个i 的和为10,然后再加上第三次自加的i 得16.
其实这些没有必要辩论,用到哪个编译器写句代码测试就行了.
但不会计算出15 的结果来的.