#include <stdio.h>
void func(int a);
int main() {
char ch = 256;
func(ch);
return 0;
}
void func(int a) {
printf("%d\n", a);
}
Run Code Online (Sandbox Code Playgroud)
上述程序的输出是0.任何人都可以解释
256对于char您机器上的类型来说太大了.
所以它0按照C标准(来自N1570,重点是我的)来包装到最小值:
6.3.1.3有符号和无符号整数
1当具有整数类型的值转换为除了以外的另一个整数类型时
_Bool,如果该值可以由新类型表示,则它将保持不变.2否则,如果新类型是无符号的,则通过重复加或减一个可以在新类型中表示的最大值来转换该值,直到该值在新类型的范围内.60)
3否则,新类型已签名且值无法在其中表示; 任一结果是实现定义或实现定义的信号上升.
的256文字是一个int,并且char是符号或无符号的,因此,上述强调行为中的一个将发生的整数类型.