个索尼 发表于 2021-10-19 13:57:56

大神求解答

#include<stdio.h>
void main()
{
char c1,c2;
c1=300;c2=400;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
}
想问问为什么第一个c2=?第二个c2=-112

a327904410 发表于 2021-10-19 14:08:00

char是字符型,第一行输出是字符。第二行输出是%d整数型,输出的是字符对应的数字吧。

hrpzcf 发表于 2021-10-19 14:10:22

#include <stdio.h>

void main(void)
{
    char c1, c2;
    c1 = 300;                        //char类型的取值范围-128~127,很明显这里赋值溢出了
    c2 = 400;                        //char类型的取值范围-128~127,很明显这里赋值溢出了,溢出后的值:-128 + (400%128) = -112
    printf("c1=%c,c2=%c\n", c1, c2); //c2 = -112,没有对应的字符,显示乱码或空
    printf("c1=%d,c2=%d\n", c1, c2); //c2 溢出后的值:-128 + (400%128) = -112
}

a327904410 发表于 2021-10-19 14:13:34

hrpzcf 发表于 2021-10-19 14:10


{:10_275:}
页: [1]
查看完整版本: 大神求解答