我有以下代码:
int ret() {
int x = 010;
int y = 4;
int z = x | y;
return z;
}
当x = 010时,此函数返回12.但是,在将x更改为10时,将返回14。为什么会这样?
答案 0 :(得分:5)
OR运算符是一个红鲱鱼:问题出在其他地方。
由于领先010
, 0
是八进制字面值。在十进制中,这是8
。
因此x
的值为8
十进制。 8 | 4
是12
。
10
是十进制文字。 10 | 4
是14
。