首页 > 解决方案 > 对于表达式 a+=b|=c,这个表达式将如何运行?

问题描述

我正在大学学习 C 编程,为了测验,上面的问题来了。我想了解它将如何执行。它与优先顺序有关吗?

在此处输入图像描述

标签: c

解决方案


是的,确实如此,但这只是故事的一半。

要解决这个问题,您需要知道两件事:

  • +=和的运算符优先级|=

  • 如果这些相同,则这些运算符的关联性(从左到右或从右到左)

幸运的是,cppreference 有一张桌子

这告诉我们:

  • 两者都+=具有|=相同的优先级

  • 它们的关联性是从右到左的

因此,测验的答案(如您的屏幕截图所示!)是a += (b |= c),也就是说
b |= c首先评估,然后将结果添加到a

但是,正如 bolov 指出的那样,任何有自尊心的程序员至少会为您加上括号,或者(理想情况下)将其编码为两个单独的语句。


推荐阅读