|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 关于C中的前++和后++
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
4033
人关注过本帖
标题:
关于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
快速回复:
关于C中的前++和后++
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.017420 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved