c - C 中具有相同优先级的运算符如何求值?

标签 c

在 C 运算符优先级的上下文中。实际上,下面的代码将被评估如下:

int32_t * result = (int32_t *) addr_base + offset;

                        |
                        |
                        ↓

int32_t * result = ((int32_t *) addr_base) + offset;

但是,我在下表中看到的是 cast+ 应该从右到左计算。换句话说,在我的示例中 +cast 的正确选择,因此我希望上面的第一条语句将像这样计算:

int32_t * result = (int32_t *) (addr_base + offset);

因为 +cast 的右侧(所以根据表的优先级更高)。

为什么会发生这种情况?

enter image description here

最佳答案

第 2 行中的 +一元加运算符。这类似于一元否定运算符(例如 x = -y)

加法运算符在第 4 行,优先级低于强制转换。

如果两个运算符具有相同的优先级,则顺序由关联性(从左到右或从右到左)给出

关于c - C 中具有相同优先级的运算符如何求值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57227849/

相关文章:

c - hp load runner 中的多线程

c - 无法编译GNU-EFI程序

c - 第34行获取被调用对象不是函数或函数指针问题:13

c - 为什么调用函数时要使用(void)?

c - 按第二个字符串对数组进行排序

无法将地址传递给指针

谁能解释什么是 Windows HAL 以及它的用途?

c - 我想用 C 创建一个简单的汇编程序。我应该从哪里开始?

c - 如何在 Linux 中使用新内核编译模块

c - Void 函数段错误中的字符串错误