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

[复制链接]
查看11 | 回复5 | 2009-7-9 14:38:25 | 显示全部楼层 |阅读模式
表达式中出现的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...
回复

使用道具 举报

千问 | 2009-7-9 14:38:25 | 显示全部楼层
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)+...
回复

使用道具 举报

千问 | 2009-7-9 14:38:25 | 显示全部楼层
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)+...
回复

使用道具 举报

千问 | 2009-7-9 14:38:25 | 显示全部楼层
1+1+1=3,i=4;2+3+4=9,i=4但VC++实际结果是10,可能tubeC结果会不一样,这和编译器有关...
回复

使用道具 举报

千问 | 2009-7-9 14:38:25 | 显示全部楼层
每天都可以看到的欠抽题。 好吧,证明一下楼上的解答是错误的。[14:31:00@~/c-cpp]$ cat a.c#include int main(){ int i; i = 1; int j = (i++)+(i++)+(i++); printf("%d %d\n", i, j);...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行