| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1385 人关注过本帖
标题:求a的值的出现问题
只看楼主 加入收藏
enzo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-12
收藏
 问题点数:0 回复次数:13 
求a的值的出现问题
有一道题。int c=3和int a, a=2*c+(c+=c++,c+5,++c)
求a的值为?
有人说是14,也有说是24;到底是多少?
另外,书上说“这道题里面2*c的值不受后面的c++控制,在运行程序的时候,会出现一个警告,该语句没有任何作用。”看不懂,为什么是这样?
如果改成a=(c+=c++,c+5,++c)+2*c 结果又会怎样呢?
搜索更多相关主题的帖子: 运行程序 
2008-03-12 08:32
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
没有警告。
a=2*c+(c+=c++,c+5,++c)
最后结果a=14,c=8

坚决不跟用TC的人打交道!
2008-03-12 10:04
enzo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-12
收藏
得分:0 
有一个warning啊。另外请教一下,为什么是14?c的值不受后面(……)的影响吗?
2008-03-12 13:12
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
这种情况还是少用为妙.
a=2*c+(c+=c++,c+5,++c)
你把最后的++c 去掉再用不同的编译器检验一下.结果不可思议!
2008-03-12 13:39
enzo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-12
收藏
得分:0 
我来试试
2008-03-12 13:45
enzo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-12
收藏
得分:0 
结果为18,还是不明白。。。
2008-03-12 13:59
思考ING
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:140
专家分:0
注 册:2008-3-12
收藏
得分:0 
int c=3和int a, a=2*c+(c+=c++,c+5,++c)
它的计算顺序为:1,做括号里面的运算(c+=c++)。得c的值为7,再计算c+5得12,再计算++c得8(??)
                2,计算2*c得6.因为后面括号里的运算并没有把最后结果赋值给c,所以c仍为3.上面++c得8也是一样的道理!
所以最后结果就是a=14,c=8

天生孤独的思考~~~~~~~~~
2008-03-12 15:58
赢政天下
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-2-28
收藏
得分:0 
我也运行了一下.是14,8
没有警告.
2008-03-12 16:54
enzo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-12
收藏
得分:0 
我觉得7楼说的不托.++c不是先使c的值加1,再用c吗?此时表达式++c的值和c的值均为8吗?
2008-03-12 17:32
☆Jony☆
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2008-2-22
收藏
得分:0 
我的运行结果如图,是c=8,a=24;
结果不同的主要原因是用的不同的编译器的事!
对于+,-,*,/,这样的二元运算符计算的先后顺序没有统一的标准,编译器不同结果就不同。
例如这里的求a值。
a=2*c+(c+=c++,c+5,++c);
有的编译器是先求出2*c=6,然后再计算(c+=c++,c+5,++c)=8;,结果a=14;
有的编译器是先求出(c+=c++,c+5,++c)=8,此时c=8,然后再计算2*c=16,结果a=24;

建议少用这样的语句!

未命名.jpg (1.47 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

☆滴水穿石☆水滴石穿☆
QQ:920633639
2008-03-12 18:54
快速回复:求a的值的出现问题
数据加载中...
 
   



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

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