一道关于C语言的问题,请各位网友帮忙解决

来源:百度知道 编辑:UC知道 时间:2024/06/01 15:47:12
题目是这样的
已知 int i=1,k;
若(1)k=(i++)+(i++)+(i++);
(2)k=(i++)+(++i)+(i++);
(3)k=(++i)+(++i)+(i++);
(4)k=(++i)+(++i)+(++i);
分别求出上面i和k的值,还要给出详细的解释哦。

首先需要明确的是
a = ++i,相当于 i=i+1; a = i
a = i++,相当于 a = i; i=i+1;
那么由以上等式可知:
(1)k=(i++)+(i++)+(i++)=(i+1)+(i+1)+(i+1)=6;i=2;
(2)i在++i的时候变成2,所以k=(i+1)+(i+1)+(i+1+1)=7;
(3)k=2+3+4=9; i=2+1+1=4;
(4)k=2+3+3=8; i=1+1+1=3;
另外这种题目毫无意义,事实上这个结果仅仅是VS底下的运行步骤,不同编译器的运行结果不同的,因为有的编译器是分步编译。

这个不同的编译器有不同的结果
并且在实际编程中也尽量避免这样用
所以没有必要在这个问题上花费太多精力。

i++就是先使用再自增,++i就是先自增后使用。。
所以(1)k=1+2+3=6 i=4;
(2) k=1+3+3=7 i=4;
(3) k=2+3+3=8 i=4;
(4) k=2+3+4=9 i=4;

6 5 4 3