C符号是扩展还是零扩展常量?

And*_*rew 5 c

C符号是扩展常量还是零扩展它们?例如:

int a = 123 & 0x3
Run Code Online (Sandbox Code Playgroud)

是0x3零扩展还是符号扩展?一般来说,什么东西在C中是零扩展的,什么是符号扩展?

谢谢!

Oli*_*rth 6

C标准没有规定实现是使用2的补码,1的补码还是其他.因此,负值的表示也不是强制性的.

但是,在您的特定情况下,0x3是一个正值,因此符号扩展和零扩展是一回事!

  • 或许OP更有趣的是**所有C中的整数文字**都有非负值,甚至类似于`0xffffffff`. (2认同)