#include<stdio.h>
int main()
{
unsigned short a=-1;
printf("%d",a);
return 0;
}
- 这给了我输出 65535。为什么?
- 当我在负侧增加 a 的值时,输出为 (2^16-1=)65535-a。
我知道 unsigned short int 的范围是 0 到 65535。但是为什么在 0 到 65535 的范围内旋转。里面发生了什么?
#include<stdio.h> int main() { unsigned int a=-1; printf("%d",a); return 0; }
- 输出为-1。
- %d 用于有符号十进制整数,而不是为什么这里不遵循打印其(int)范围的最大值的规则。
- 为什么这部分的输出是-1?
我知道 %u 用于打印无符号十进制整数。
为什么行为在第二个代码中未定义,而不是在第一个代码中。?
这是我在 gcc 编译器中编译的。这是一个 C 代码在我的机器上 sizeof short int 是 2 个字节,而 int 的大小是 4 个字节。