为什么以下程序的输出为“-128”,尽管它的值指定为“128”?

Why does the following programme gives output as "-128" despite its value assigned as "128"?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    signed char chr=128;

    printf("%d\n",chr);
    
    return 0;
}

你知道整数限制吗? char 值占用 1 个字节。一个字节通常是 8 位。要通过位数来计算限制,计算方式为 2^n-1 意味着具有 8 位的整数在无符号时的范围为 0 到 255。由于您的变量是有符号的,它会为符号分配一位,这意味着它的范围从 -128 到 127。由于您将其分配为 128,它溢出,回滚到 -128。如果你的程序不使用负数,你应该使用 signed char,否则你可能想使用 2 个字节的 short