运算符~c编程语言

sgu*_*sgu 3 c operators

~操作员如何在c中工作?

任何人都可以解释以下代码?

main()
{
   printf("%d",~5);
}
Run Code Online (Sandbox Code Playgroud)

输出是 -6

Jas*_*zun 7

5(可能)是一个带位表示的32位有符号整数0x00000005,或二进制:

0b00000000000000000000000000001010
Run Code Online (Sandbox Code Playgroud)

~5是按位不是5,这将是0xFFFFFFFA或二进制文件:

0b11111111111111111111111111110101
Run Code Online (Sandbox Code Playgroud)

使用两个补码,即-6.

  • 请注意,我说`5`可能是*32位,因为根据C标准,`int`不一定是32位.它只需要等于或大于`short`的大小,它必须是16位或更多. (2认同)