搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 关于C中的前++和后++
标题:
关于C中的前++和后++
只看楼主
ljfljf2006
等 级:
新手上路
帖 子: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
等 级:
新手上路
帖 子:58
专家分:0
注 册:2005-9-11
第
2
楼
得分:0
这个我在自己的机器上运行了一遍
但结果和自己预期的不一样
希望大家可以把在你们机器上运行的结果告诉我 并说明你所使用的编译器
或者把原理给我解释下
[[it] 本帖最后由 ljfljf2006 于 2008-2-2 22:25 编辑 [/it]]
I will come back!
2008-02-02 22:07
bbsstart
等 级:
新手上路
帖 子:3
专家分:0
注 册:2008-2-1
第
3
楼
得分:0
7 25 25 忘记写编译器了 补上 TURBO C 2.0
[[it] 本帖最后由 bbsstart 于 2008-2-2 23:01 编辑 [/it]]
2008-02-02 22:17
菜鸭
等 级:
新手上路
帖 子:262
专家分:0
注 册:2007-12-9
第
4
楼
得分:0
我虽然不是高手,但这个问题我不用编译也弄明白结果了。
下面我帮您分析一下:
首先,a被赋值为3;
然后看b的赋值式子,都是++a,说明是先赋值,后运算,a头一次自加为4,后一次自加为5,由于运算符的优先级别问题,++、--等大于算数运算符,所以这时候等于是a*a=25;
再看看c的赋值表达式,很清楚,先运算后自加,所以c=25;
a经过自加,所以a=7;
解释得也不知道你明白没有?我解释得如果有错误的地方,请众位再指教。
谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-02 22:35
ljfljf2006
等 级:
新手上路
帖 子:58
专家分:0
注 册:2005-9-11
第
5
楼
得分: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
菜鸭
等 级:
新手上路
帖 子:262
专家分:0
注 册:2007-12-9
第
6
楼
得分:0
回复 5# 的帖子
说过了嘛,是运算符优先级别问题,因为自加运算符高于*运算符,所以得先把它加完了,然后再参与乘法运算。
谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-02 22:42
ljfljf2006
等 级:
新手上路
帖 子:58
专家分:0
注 册:2005-9-11
第
7
楼
得分: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
菜鸭
等 级:
新手上路
帖 子:262
专家分:0
注 册:2007-12-9
第
8
楼
得分:0
b=++a*++a;等于是A先自加两回,也就是等于5之后再参与运算,也就是a=5*5=25.
谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-02 22:54
失败呀
等 级:
新手上路
帖 子:12
专家分:0
注 册:2008-2-2
第
9
楼
得分: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
等 级:
新手上路
帖 子:58
专家分:0
注 册:2005-9-11
第
10
楼
得分:0
回复 9# 的帖子
在我的编译器下运行b=++a*++a*++a,结果是216
I will come back!
2008-02-02 23:02
37
1/4页
1
2
3
4
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-199396-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.953030 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved