大神求解答
#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 char是字符型,第一行输出是字符。第二行输出是%d整数型,输出的是字符对应的数字吧。 #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
}
hrpzcf 发表于 2021-10-19 14:10
{:10_275:}
页:
[1]