c语言:下面的程序结果是什么?请解释具体过程。满意结果追加悬赏。

[复制链接]
查看11 | 回复3 | 2012-6-19 23:14:01 | 显示全部楼层 |阅读模式
int j =(++i)+(++i)+(++i);这行代码在不同的实现中可能会有同的结果,不是推荐使用的!在VC6中结果应为:16过程如下:首先i=3第一个(++i)//先把i自加1,也就变成了4第二个(++i)//又把i自加1,也就变成了5这时这句int j =(++i)+(++i)+(++i);就变成了:int j =i+i+(++i);这时到了问题的关键!是先算左面的i+i,还是先作右边的++i好像在C标准没有定义(我的印象是这样的,也许我记错了!)但在VC中是先算左边的,这样就变成了:int j =5+5+(++i);也就是:int j =10+(++i);下面的问题就简单了,先算()中的++i这是毋庸置疑的...
回复

使用道具 举报

千问 | 2012-6-19 23:14:01 | 显示全部楼层
答案一般是16。。。可能为15 或者18。。。至于为什么呢。。估计你也不想听。。得反汇编才能看出来。。。而且C99标准有规定。。这样写也是不符合标准的。。...
回复

使用道具 举报

千问 | 2012-6-19 23:14:01 | 显示全部楼层
15,i的值分别是4,5,6,然后相加得j的值...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行