C语言: int a = 322; printf("%c\n",a);C语言是如何阉割超过ascii表范围的输入字符

#include<stdio.h>
int main()

{
    
    
int a = 322;
char b;
b = a;
printf("%c\n",b);

return 0;
}

在这里插入图片描述
可以看到结果是B
我们把322转换为16进制,
在这里插入图片描述
结果是142 但是char只支持两个十六进制数,最高位的1就会被阉割掉,
所以42对照ascii码表 结果就是 B
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/helloworld573/article/details/105705456