相关疑难解决方法(0)

为什么班次的优先级低于C中的加法和减法?

在进行位操作时,我有时会觉得这很不方便(虽然我现在不记得任何具体的例子).我也发现它在概念上令人困惑,因为移位基本上是乘法和除以2的幂.

我在C++中看到它很方便,当使用<<将输出发送到ostream时,但当然不能用于解释订单最初是如何在C中修复的.

c operator-precedence

5
推荐指数
1
解决办法
285
查看次数

令人困惑的运算符优先级:a << b + c << d

运算符的+优先级高于<<C++,这意味着表达式a << b + c << d应该被评估为:

a << (b + c) << d
Run Code Online (Sandbox Code Playgroud)

但这没有意义.跟随时可以获得更多感觉

a << (b + (c << d))
Run Code Online (Sandbox Code Playgroud)

但是,这违反了的优先级+<<,不是吗?编译器如何评估"确实有意义"的部分?

更新:在提出问题时,我认为编译器使用了第二个变体,这就是为什么我想知道编译器是如何进行此评估的.事实上,第一个被使用,它是正确的.

c++ operator-precedence

1
推荐指数
1
解决办法
263
查看次数

标签 统计

operator-precedence ×2

c ×1

c++ ×1