使用sizeof运算符的整数范围

Vig*_*ino 3 c sizeof

考虑一下:

1. printf(“%d”, sizeof(32767));
2. printf(“%d”, sizeof(-32767));
3. printf(“%d”, sizeof(-32768));
Run Code Online (Sandbox Code Playgroud)

1和2产生的结果为2,而第三个语句产生了4.但是范围int是-32768到32767.为什么单独的第三个语句有差异?有人能解释一下吗?

在我的编译器大小int是2.

Bo *_*son 6

该值-32768不被语言视为单个项目,它由两部分组成 - 符号和值.

当上限为32767时,该值32768不能为.int因此,确定为更大的类型,如long.只有在那之后才会应用这个标志.