| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1986 人关注过本帖
标题:关于i=(++i)+(++i)+(++i)为什么等于7的个人理解
只看楼主 加入收藏
kenwong_bbs
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2009-7-8
收藏
 问题点数:0 回复次数:22 
关于i=(++i)+(++i)+(++i)为什么等于7的个人理解
请直接看代码!

#include<iostream>
using namespace std;
int main()
{
    int i=0;
    i=(++i)+(++i)+(++i);
    //第一步:i=(++i)+(++i)+1    此时i=1
    //第二步:i=(++i)+2+1        此时i=2
    //第三步:i=(++i)+3            此时i=3
    //第四步:i=4+3                此时i=4
    //第五步:i=7
    cout<<i<<endl;
    return 0;
}
2009-07-18 17:32
y_afu
Rank: 2
等 级:论坛游民
帖 子:17
专家分:62
注 册:2009-7-7
收藏
得分:0 
这是什么逻辑啊,“第三步:i=(++i)+3   此时i=3” 。 这里要++i后i才等于3,怎么还没++i就等于3啦,我想这个表达式很大程度上和编译器有关。以我的理解是加法从左到右计算首先计算第一个加法的两个操作数所以先做两个++i,此时i=2,所以第一个加法的值等于4,编译器这时会为这个值分配一个临时存储空间放于活动记录表的临时变量区(请参考编译原理)然后再做第二个加法的两个操作数,第一个已经是4,第二个为++i做这个操作之前的i为2完成++i后i的值为3,所以第二个加法的值为4+3=7;
2009-07-18 18:25
niuyufeng
Rank: 2
等 级:论坛游民
帖 子:12
专家分:85
注 册:2009-7-17
收藏
得分:0 
这个表达式很大程度上和编译器有关
2009-07-18 20:47
hhei
Rank: 2
等 级:论坛游民
帖 子:36
专家分:27
注 册:2007-10-14
收藏
得分:0 
赞同,跟编译器有关,我用的是VS2005,结果是9
猜测是这样的,可能他是先给i连续做3 次++i
结果i=3,然后3个位置的i相加,就是9 了

2009-07-19 12:06
明次
Rank: 5Rank: 5
来 自:China
等 级:职业侠客
帖 子:166
专家分:303
注 册:2009-1-11
收藏
得分:0 
结果是与编译器有关的,不同的编译器结果也会不同!

、明次℡!           QQ:604622530
2009-07-19 14:28
hfdss
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2009-7-17
收藏
得分:0 
看到楼上的朋友们的解释,我就不用担心整天纠缠于这种题目了。
不知道这种题目是否有用否?也许可以写得更清晰一些。对吧?
2009-07-19 19:56
home58
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-7-17
收藏
得分:0 
从来不对这种狗屁代码进行深究。
2009-07-20 21:50
home58
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-7-17
收藏
得分:0 
5楼说得对,具体什么结果,还得问编译器。

脑子进水的人才会写出这种东西。
2009-07-20 21:53
yu5890681yu
Rank: 2
等 级:论坛游民
帖 子:18
专家分:11
注 册:2009-7-22
收藏
得分:0 
回复 6楼 hfdss
呵呵 我感觉这种代码很锻炼程序员的思维 平时玩玩也好啊
2009-07-22 15:25
bmc
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2009-7-23
收藏
得分:0 
有点乱!
2009-07-23 23:58
快速回复:关于i=(++i)+(++i)+(++i)为什么等于7的个人理解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021952 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved