在读取this之后,可以像这样在GCC中为二进制写适当的二进制常量:
int foo = 0b1010;
并期望用10
打印出printf("%d", foo)
。
但是,附加了关键字signed
(尽管默认情况下对int
进行了签名)不会影响GCC对0b1010的解释(应为-6
)。为什么会这样,并且可以对二进制常量进行签名?
答案 0 :(得分:3)
默认情况下,数字常量的类型为int
。常量0b1010
也是这种类型。
假设系统上的int
为4字节,这等效于写入0b00000000000000000000000000001010
。假设补码表示为2,则未设置符号位,因此这不是负数。其值为十进制十。
如果您改为给0b11111111111111111111111111111010
作为值,则为-6。