| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖
标题:[求助]这道简单题的答案怎解出来的?
只看楼主 加入收藏
鸡头鸭脚
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-5-19
收藏
 问题点数:0 回复次数:9 
[求助]这道简单题的答案怎解出来的?

看看这道题
void main()
{ int a=1,b=2,c=3;
printf("%d,%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));
}
请问答案是怎么做出来的?

2007-05-19 23:29
coolskyboy
Rank: 2
等 级:论坛游民
帖 子:102
专家分:53
注 册:2007-4-7
收藏
得分:0 

从右边开始赋值 先把C赋给B 然后赋给A 所以第一打印出来的应该是3 ,第二个 =的优先级比==的高 .所以先把B赋值给了a 然后a判断是否与 C相等 如果相等 打印出来的是1 不相等就是0 ,...


2007-05-20 00:04
鸡头鸭脚
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-5-19
收藏
得分:0 
想问下,一般=的优先级不是比==低吗?为什么这道题=的优先级就比==的高呢?

体验探索的艰辛 享受硕果的欣喜 给自己一次机会 生命不相信如果 只管向前冲ing
2007-05-20 16:58
yinlenc
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2007-5-17
收藏
得分:0 
"=":是右向左运行;
“==”是左向右运行

2007-05-20 18:05
大卫2008
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-5-5
收藏
得分:0 
printf(括号里面表达式的计算顺序是由右到左,计算完成后输出到显示器的顺序为从左到右)
但是题目里面有5个%d却对应了4个表达式,所以最后一个%d的值是不确定的(随机的);
a=b==c 这个表达式的计算顺序是先判断b==c,然后把得到的值赋给a.

诗写的好~而且力气大~~
2007-05-20 22:29
鸡头鸭脚
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-5-19
收藏
得分:0 

谢谢各位的帮助,我明白了,以后多指教


体验探索的艰辛 享受硕果的欣喜 给自己一次机会 生命不相信如果 只管向前冲ing
2007-05-21 13:31
a285028516
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-5-2
收藏
得分:0 
这些知识那里可以找到啊?
2007-05-21 16:03
daijingchun
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-5-16
收藏
得分:0 
3 0 0 0
我觉得应该是这个答案。

2007-05-21 20:27
夜中梦
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2007-5-12
收藏
得分:0 
3 1 0 0哦

2007-05-21 21:15
jerny
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-23
收藏
得分:0 
TC2.0环境下输出:3,1,0,0,(随机数);
void main()
{ int a=1,b=2,c=3;
printf("%d,%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));
}

1. a=b=c:此句为赋值语句,从右向左的,即a=(b=(c=3));
2. a=b==c;此句为先等于,再赋值,即a=(b==c),因为有赏个语句,此时的a=3,b=3,c=3,所以(b==c)为真=1,所以a=1
2. a==(b==c);因为b=3,c=3,所以(b=c)b=3,a=3,而(a==1)为假,所以,值为0;
..

2007-05-21 21:35
快速回复:[求助]这道简单题的答案怎解出来的?
数据加载中...
 
   



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

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