首页 > 解决方案 > 减去字符不会溢出

问题描述

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

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

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

标签: c++gccinteger-overflow

解决方案


推荐阅读