| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 438 人关注过本帖
标题:[讨论]为什么不行
只看楼主 加入收藏
zyn0329
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-1-4
收藏
 问题点数:0 回复次数:4 
[讨论]为什么不行
main()
{
int a=2,b=3;
a=a+b=b++;
printf("%d %d\n",a,b);
}
哪儿错啦?
“=”是自右向左运算的,不是应该先执行b=b++的??
如果(b=b++)就行啦,但是为什么用上面的就不行?
2006-01-27 18:28
yylcel
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2005-12-10
收藏
得分:0 
a+b=b++左值變數應該是一個吧。
2006-01-27 18:59
奔跑的鸟
Rank: 1
等 级:新手上路
帖 子:391
专家分:0
注 册:2006-1-20
收藏
得分:0 

单目运算符优先级最高,双目次之,三目较低。
双目运算符中,算术运算符较高,关系次之,逻辑较低(!除外)。
位运算符中,移位运算高于关系运算,位逻辑运算低于关系运算。
圆括号运算符优先级最高,逗号运算符最低。

简单的快乐着~
2006-01-27 22:22
奔跑的鸟
Rank: 1
等 级:新手上路
帖 子:391
专家分:0
注 册:2006-1-20
收藏
得分:0 
优先级 运算符
1 (),[],->
2 !,~,++,--,正负号,*,&,sizeof
3 *,/,%
4 +,-(加减号)
5 <<,>>
6 <,<=,>,>=
7 ==,!=
8 &(按位与)
9 ^(按位异或)
10 |(按位或)
11 &&(逻辑与)
12 ||(逻辑或)
13 ?
14 =,+=,-=,/=,%=等赋值运算
15 ,

简单的快乐着~
2006-01-27 22:42
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
以下是引用zyn0329在2006-1-27 18:28:00的发言:
main()
{
int a=2,b=3;
a=a+b=b++;
printf("%d %d\n",a,b);
}
哪儿错啦?
“=”是自右向左运算的,不是应该先执行b=b++的??
如果(b=b++)就行啦,但是为什么用上面的就不行?

搂主你好,请你看赋值语句的第二个“=”,等号右边规定一个表达式“b++”没有错,而注意等号左边规定的是一个变量,若楼主不对a+b的b前面加个括号,系统认为赋值语句左边是一个a+b的表达式,所以会造成错误。


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2006-01-28 10:52
快速回复:[讨论]为什么不行
数据加载中...
 
   



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

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