我正在实现库函数 strcmp ,该函数应根据输入的不同而在第一个char数组较小时返回小于0的值,而在返回较大值时返回小于0的值。当数组相等时为0。我遇到的一个聪明技巧是找到有差异的第一个索引,然后减去索引处的字符。我以为这会中断,因为我们要减去可能导致字符溢出的字符,所以我用此程序对其进行了测试,实际上它确实起作用。
int res(){
char a = -128;
char b = 15;
return a-b;
}
output: -143
所以我的问题是为什么这行得通。 char
总是在算术运算之前强制转换为整数吗?还是编译器很聪明?