对 returns 值超过 127 的 char 执行操作时出现分段错误

Segmentation fault when performing an operation on a char which returns a value that exceeds 127

我使用 gcc 在两台不同的计算机上测试了以下代码:

int main(int argc, char** argv) {
    char c1, c2;
    c1 = 100;
    c2 = 4*c1;

    printf("%d", c2);
}

两个测试中的一个抛出分段错误,另一个输出 -112。为什么会这样?

首先告诉大家,一个计划charsigned还是unsigned,要看执行情况。

就是说,我想您现在已经理解了,尝试将一个值存储到一个可能不适合处理它的类型中,是实现定义的行为。

在大多数实际情况下,存储的值将被视为 2 的补码值(负数),并按此使用,但这不能保证。