| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1180 人关注过本帖
标题:自加 自减 运算符的问题
取消只看楼主 加入收藏
yim
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-7-28
收藏
 问题点数:0 回复次数:6 
自加 自减 运算符的问题
#include <iostream>
using namespace std;
int main()
{
    int i,j,m,n;
    i=8;
    j=10;
    m=++i+j++;
    n=(++i)+(++j)+m;
    cout<<i<<'\t'<<j<<'\t'<<m<<'\t'<<n<<endl;
    return 0;
}
这个是谭哥书上的课后习题。我编译后输出的结果是 10 12 19 41 。求指导,为什么m=19,n=41?能不能给个分析的详细思路?
搜索更多相关主题的帖子: include 
2013-07-28 01:56
yim
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-7-28
收藏
得分:0 
回复 2楼 peach5460
++i:i使用前+1
i++: i使用后再+1

cout<<++i; 运算结果是9.
cout<<i++; 运算结果是8.但是i值为9.

我是不是可以这样理解:

i的运算过程是:在m的运算中,i=9.在n的运算中 i=10;
j的运算过程是:在m的运算中,j的结果虽然为10,但是实际上j为11.在n的运算中 j=12;
m的运算过程是:i=9,j=10. 所以结果为19;
n的运算结果为:10+12+19=41.

有错请狠狠拍砖。

晚起的虫儿......
2013-07-28 10:20
yim
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-7-28
收藏
得分:0 
回复 4楼 peach5460
谢谢!

晚起的虫儿......
2013-07-28 18:47
yim
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-7-28
收藏
得分:0 
回复 5楼 额外覆盖
就是取值问题,之前一直想不通,自己钻角落里了。

晚起的虫儿......
2013-07-28 18:54
yim
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-7-28
收藏
得分:0 
回复 8楼 TonyDeng
我问这个问题的时候,自己已经想了一个下午加一个晚上还是没结果才问的。我是不是违反了论坛规则??

晚起的虫儿......
2013-07-28 23:49
yim
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-7-28
收藏
得分:0 
回复 12楼 TonyDeng
运算规则的先后顺序和算法的左右顺序想了很久(可能比较笨)。m这行我看了很久才分析出来,确实有括号比较容易理解以及分析。按照您的建议,我做了一些修改,您看这样是不是可以?(或许写出来不简洁,希望指正)

#include <iostream>
using namespace std;
int main()
{
    int i,j,x,y,m,n;
    i=8;
    j=10;
    x=++i;
    y=j++;
    m=x+y;
    n=(++i)+(++j)+m;
    cout<<i<<'\t'<<j<<'\t'<<m<<'\t'<<n<<endl;
    return 0;
}

晚起的虫儿......
2013-07-29 00:10
yim
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-7-28
收藏
得分:0 
回复 16楼 zhengchen080
所以,我写的这个可以么??我运行了一下,结果是一样的,只是不确定是否可以这样写。而且,还有更加简单又明确的写法么?我好想知道。

晚起的虫儿......
2013-07-30 01:17
快速回复:自加 自减 运算符的问题
数据加载中...
 
   



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

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