【问题标题】:Variable assignment and the comma operator [duplicate]变量赋值和逗号运算符
【发布时间】:2016-12-28 07:24:29
【问题描述】:

谁能帮我解释一下:

int a, b, c, d;
a = 2;
b = 4;
c = a, b;
d = (a, b);

为什么c == 2d == 4 ???

【问题讨论】:

  • 不要在图片中发布代码和结果,这是一个可以在移动设备上查看的 PITA,也可以在编译器中尝试您的代码。 -1,直到你修复它。
  • 好的,很抱歉。
  • 拒绝投票已撤回。

标签: c++ c visual-c++


【解决方案1】:

这两个语句都被评估为

c = a;
d = b;

由于 逗号 运算符(在所有运算符中具有最低优先级)在 C 和 C++ 中的工作方式。

对于第一个,首先评估c = a(因为= 的优先级高于逗号运算符)然后评估b(这是一个无操作)。 整个表达式有一个值b,但它没有分配给任何东西。

对于d = (a, b);(a, b) 由于括号而被首先计算。这有一个值b,并分配给d

【讨论】:

  • @TrầnHồngPhát - 你应该接受这个答案,因为它对你有帮助并且它是正确的。
猜你喜欢
  • 2018-03-22
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 2017-01-13
  • 2015-02-08
  • 2012-12-30
  • 2011-11-16
  • 2012-07-25
相关资源
最近更新 更多