考虑一下:
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.
该值-32768不被语言视为单个项目,它由两部分组成 - 符号和值.
当上限为32767时,该值32768不能为.int因此,确定为更大的类型,如long.只有在那之后才会应用这个标志.