a=b=c的运算顺序

questionprogfan 2006-02-15 05:23:10
我想问一下a=b=c是如何赋值的,就是赋值和运算的顺序是怎么样的?
谢谢。

int main()
{
int a = 0;
int b = 1;
int c = 2;
a = b = c;
}
现在a,b,c的值都是2,但是是怎么运算的呢?是先a=b然后再把c的值赋给a=b还是怎么样?
...全文
629 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zqhpcc 2006-02-16
  • 打赏
  • 举报
回复
看到 a = b = c; 这句语句,应该知道运算结束后三个变量相等,采用右结合是最合理的方式。
Guo14 2006-02-16
  • 打赏
  • 举报
回复
右结合
helanshan 2006-02-16
  • 打赏
  • 举报
回复
赋值运算,当然是右结合。。。
xxxdg 2006-02-16
  • 打赏
  • 举报
回复
不要出现这种语句。
Never!
megaboy 2006-02-15
  • 打赏
  • 举报
回复
别把结合性当做了求值顺序,结合性与求值顺序是两个不同的概念。结合性是当两个优先级相同的运算符共享同一个操作数时,决定该操作数属于哪个运算符的规则。而求值顺序解决的是先计算哪一个操作数的问题。

对于a=b=c;表达式,b是两个赋值运算符的共享操作数,由于赋值运算符的结合性是从右到左的,因此b属于第二个赋值运算符,该表达式等效于a=(b=c);

那么,这个表达式的求值顺序是怎样的呢?赋值运算符的求值顺序是implementation-defined的,是实现相关的,不同的编译器有可能不同,有的可能会先计算a,有的可能会先计算b=c。
laofuxing 2006-02-15
  • 打赏
  • 举报
回复
1. b=c;
2.a=(b=c)'
du51 2006-02-15
  • 打赏
  • 举报
回复
a = b = c;
1.c的值赋给b.
2.在1运算的同时,(b=c)这个式子的值也得出并等于b的值
3.(b=c)这个式子的值赋给a
healer_kx 2006-02-15
  • 打赏
  • 举报
回复
这个东西一般都是从右向左的顺序的,你可以体会一下。
shaoboailinglijun 2006-02-15
  • 打赏
  • 举报
回复
a = b = c;
是c的值赋给b,b的值赋给a,a,b,c的值都是2,右结合。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧