|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求a的值的出现问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1385
人关注过本帖
标题:
求a的值的出现问题
只看楼主
加入收藏
enzo
等 级:
新手上路
帖 子: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
等 级:
新手上路
帖 子:289
专家分:0
注 册:2006-12-31
第
2
楼
收藏
得分:0
没有警告。
a=2*c+(c+=c++,c+5,++c)
最后结果a=14,c=8
坚决不跟用TC的人打交道!
2008-03-12 10:04
举报帖子
使用道具
赠送鲜花
enzo
等 级:
新手上路
帖 子:9
专家分:0
注 册:2008-3-12
第
3
楼
收藏
得分:0
有一个warning啊。另外请教一下,为什么是14?c的值不受后面(……)的影响吗?
2008-03-12 13:12
举报帖子
使用道具
赠送鲜花
xianshizhe111
等 级:
新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
第
4
楼
收藏
得分:0
这种情况还是少用为妙.
a=2*c+(c+=c++,c+5,++c)
你把最后的++c 去掉再用不同的编译器检验一下.结果不可思议!
2008-03-12 13:39
举报帖子
使用道具
赠送鲜花
enzo
等 级:
新手上路
帖 子:9
专家分:0
注 册:2008-3-12
第
5
楼
收藏
得分:0
我来试试
2008-03-12 13:45
举报帖子
使用道具
赠送鲜花
enzo
等 级:
新手上路
帖 子:9
专家分:0
注 册:2008-3-12
第
6
楼
收藏
得分:0
结果为18,还是不明白。。。
2008-03-12 13:59
举报帖子
使用道具
赠送鲜花
思考ING
来 自:重庆
等 级:
新手上路
帖 子:140
专家分:0
注 册:2008-3-12
第
7
楼
收藏
得分: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
举报帖子
使用道具
赠送鲜花
赢政天下
来 自:浙江
等 级:
新手上路
帖 子:48
专家分:0
注 册:2008-2-28
第
8
楼
收藏
得分:0
我也运行了一下.是14,8
没有警告.
2008-03-12 16:54
举报帖子
使用道具
赠送鲜花
enzo
等 级:
新手上路
帖 子:9
专家分:0
注 册:2008-3-12
第
9
楼
收藏
得分:0
我觉得7楼说的不托.++c不是先使c的值加1,再用c吗?此时表达式++c的值和c的值均为8吗?
2008-03-12 17:32
举报帖子
使用道具
赠送鲜花
☆Jony☆
等 级:
新手上路
帖 子:70
专家分:0
注 册:2008-2-22
第
10
楼
收藏
得分: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
举报帖子
使用道具
赠送鲜花
14
1/2页
1
2
快速回复:
求a的值的出现问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.058310 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved