是整数常量的默认类型是signed还是unsigned?如0x80000000,我怎样才能决定使用它作为有符号整数常量还是无任何后缀的无符号整数常量?
如果是有符号整数常量,如何解释以下情况?
printf("0x80000000>>3 : %x\n", 0x80000000>>3);
Run Code Online (Sandbox Code Playgroud)
输出:
0x80000000>>3 : 10000000
Run Code Online (Sandbox Code Playgroud)
以下情况可以表明我的平台使用算术按位移位,而不是逻辑按位移位:
int n = 0x80000000;
printf("n>>3: %x\n", n>>3);
Run Code Online (Sandbox Code Playgroud)
输出:
n>>3: f0000000
Run Code Online (Sandbox Code Playgroud) 在x64上,我可以不度日的malloc()比1.9G内存的更多,但我的物理内存为8G,为什么会出现这种情况?