【问题标题】:Bitwise OR Operator [duplicate]按位或运算符 [重复]
【发布时间】:2017-08-02 09:27:05
【问题描述】:

我有以下代码:

int ret() {
    int x = 010;
    int y = 4;
    int z = x | y;
    return z;
}

当 x = 010 时,此函数返回 12。但是,将 x 更改为 10 时,返回 14。为什么会这样?

【问题讨论】:

  • 二进制整数文字是在 C++14 中引入的,并使用前缀 0b。如0b10 中的整数值 2。
  • 很遗憾,0o 没有在 C++14 中用于八进制文字,并着眼于在未来的标准中弃用没有 o 的领先 0
  • 很遗憾八进制文字没有被彻底弃用。我也许可以和10_octal一起生活。
  • 另一个可能的欺骗目标:stackoverflow.com/q/26568200/1896169。 stackoverflow上有很多这样的问题

标签: c++


【解决方案1】:

OR 运算符是一个红鲱鱼:问题在别处。

010 是一个 八进制 文字,因为前面有 0。在十进制中,这是8

所以x 的值是十进制的8。而8 | 4 就是12

10 是十进制文字。而10 | 414

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2013-05-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    相关资源
    最近更新 更多