【问题标题】:How do I compute the sum of bitwise operator results in the following case?在以下情况下,如何计算按位运算符结果的总和?
【发布时间】:2022-06-24 22:06:31
【问题描述】:

代码如下:

#include <stdio.h>
int main()
{
    int a = 512,b = 32;
    int c = a>>2 + b<<2;
    printf("%d",c);

    return 0;
}

我期望的结果不是 512,而是 128 (a>>2) + 128 (b

【问题讨论】:

  • 你的编译器应该警告你关于操作符的优先级。您需要将a&gt;&gt;2 + b&lt;&lt;2 更改为(a &gt;&gt; 2) + (b &lt;&lt; 2)
  • 那么如果你理解了优先级,那有什么问题呢?它被评估为`(a>>(2+b))

标签: c


【解决方案1】:

Operator precedence in C 表示加法运算符的优先级高于移位运算符,如果您想要预期的输出 512,则需要使用括号强制首先发生移位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2020-05-13
    • 2013-06-22
    • 1970-01-01
    • 2021-08-02
    相关资源
    最近更新 更多