| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4033 人关注过本帖
标题:关于C中的前++和后++
只看楼主 加入收藏
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
收藏
 问题点数:0 回复次数:36 
关于C中的前++和后++
int a,b,c;
a=3;
b=++a*++a;
c=a++*a++;
printf("%d %d %d",a,b,c);

问下大家结果是什么
搜索更多相关主题的帖子: int 结果 
2008-02-02 22:01
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
收藏
得分:0 
这个我在自己的机器上运行了一遍
但结果和自己预期的不一样
希望大家可以把在你们机器上运行的结果告诉我 并说明你所使用的编译器
或者把原理给我解释下

[[it] 本帖最后由 ljfljf2006 于 2008-2-2 22:25 编辑 [/it]]

I will come back!
2008-02-02 22:07
bbsstart
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-2-1
收藏
得分:0 
7 25 25   忘记写编译器了 补上 TURBO C 2.0

[[it] 本帖最后由 bbsstart 于 2008-2-2 23:01 编辑 [/it]]
2008-02-02 22:17
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
收藏
得分:0 
我虽然不是高手,但这个问题我不用编译也弄明白结果了。

下面我帮您分析一下:

首先,a被赋值为3;

然后看b的赋值式子,都是++a,说明是先赋值,后运算,a头一次自加为4,后一次自加为5,由于运算符的优先级别问题,++、--等大于算数运算符,所以这时候等于是a*a=25;

再看看c的赋值表达式,很清楚,先运算后自加,所以c=25;

a经过自加,所以a=7;

    解释得也不知道你明白没有?我解释得如果有错误的地方,请众位再指教。

谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-02 22:35
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
收藏
得分:0 
[bo]以下是引用 [un]菜鸭[/un] 在 2008-2-2 22:35 的发言:[/bo]

a被赋值为3;a头一次自加为4,后一次自加为5

为什么不是4*5=20呢?
这就是我的疑惑

I will come back!
2008-02-02 22:39
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
收藏
得分:0 
回复 5# 的帖子
说过了嘛,是运算符优先级别问题,因为自加运算符高于*运算符,所以得先把它加完了,然后再参与乘法运算。

谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-02 22:42
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
收藏
得分:0 
回复 6# 的帖子
++a返回4,此时a=4,然后又++a,返回5,此时a=5;
这样的话就应该是b=4*5才对呀

这和 自加运算符高于*运算符 并不矛盾吧

[[it] 本帖最后由 ljfljf2006 于 2008-2-2 22:53 编辑 [/it]]

I will come back!
2008-02-02 22:52
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
收藏
得分:0 
b=++a*++a;等于是A先自加两回,也就是等于5之后再参与运算,也就是a=5*5=25.

谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-02 22:54
失败呀
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-2-2
收藏
得分:0 
结果是7 25 25,照我的理解,a自加了4次,所以输出a为7,
b=++a*++a;中a先加了两次再相乘,a=5,所以5*5=25,
c=a++*a++;中a先相乘再自加两次,故5*5=25,自加后为7.
++a的意思是先自加后运算,a++则先运算后再自加。
其中,若b=++a*++a*++a;则b的结果是150,运算顺序为b=(++a*++a)*++a-->(5*5)*6.这里估计有一个结合性的问题了,
以上为个人理解,已经过初步验证
2008-02-02 22:59
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
收藏
得分:0 
回复 9# 的帖子
在我的编译器下运行b=++a*++a*++a,结果是216

I will come back!
2008-02-02 23:02
快速回复:关于C中的前++和后++
数据加载中...
 
   



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

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