自增运算i=1,(i++)+(i++)+(i++)的值与(++i)+(++i)+(++i)的值与运算后的i值各为多少?

来源:百度知道 编辑:UC知道 时间:2024/06/18 11:50:26
请给出具体的解答或说明,谢了~~
trube c

表达式中出现的i++是计算完本次表达式i的值才自加,并不影响本次表达式计算,所以第一个(i++)+(i++)+(i++)的值就是i+i+i的值也就是1+1+1=3;
表达式中出现的++i的意思的i的值先自加再参与运算,所以这里的自加就会影响到本次表达式的计算,
(++i)+(++i)+(++i)的值也就相当于(i+i)+(i+i)+(i+i)=(1+1)+(1+1)+(1+1)=6

int i=1;

(i++)+(i++)+(i++)
等效于
先算i+i+i=3,然后i++3次,所以(i++)+(i++)+(i++)的值是3,运算完i=4

(++i)+(++i)+(++i)
等效于
先做一个++i,结果为2,存进a
再做一次++i,结果为3,存进b
再做一次++i,结果为4,存进c
最后(++i)+(++i)+(++i) = a+b+c = 2+3+4 = 9
但是实际运行结果是10...这个其实取决于编译器....确实这种写法很找抽的...不同编译器可能会有不同结果...

int i=1;

(i++)+(i++)+(i++)
等效于
先算i+i+i=3,然后i++3次,所以(i++)+(i++)+(i++)的值是3,运算完i=4

(++i)+(++i)+(++i)
等效于
先做一个++i,结果为2,存进a
再做一次++i,结果为3,存进b
再做一次++i,结果为4,存进c
最后(++i)+(++i)+(++i) = a+b+c = 2+3+4 = 9

1+1+1=3,i=4;2+3+4=9,i=4
但VC++实际结果是10,可能tubeC结果会不一样,这和编译器有关

每天都可以看到的欠抽题。

好吧,证明一下楼上的解答是错误的。

[14:31:00@~/c-cpp]$ cat a.c
#include <stdio.h>
int main()
{
in