减去字符应不会溢出

时间:2019-11-28 14:58:29

标签: c++ gcc integer-overflow

我正在实现库函数 strcmp ,该函数应根据输入的不同而在第一个char数组较小时返回小于0的值,而在返回较大值时返回小于0的值。当数组相等时为0。我遇到的一个聪明技巧是找到有差异的第一个索引,然后减去索引处的字符。我以为这会中断,因为我们要减去可能导致字符溢出的字符,所以我用此程序对其进行了测试,实际上它确实起作用。

int res(){
    char a = -128;
    char b = 15;
    return a-b;
}
output: -143

所以我的问题是为什么这行得通。 char总是在算术运算之前强制转换为整数吗?还是编译器很聪明?

0 个答案:

没有答案