看错问题了,b=321,是因为字符'A'的ASCII码值对应的是65,然后加上个256,就是等于321。
下面是打印字符赋值后的变量a为啥是'A'的解释,如果需要,可以看下:
简单来说是因为char类型用一个int型的值赋值时,会进行截断,超出char一个字节范围的数值会被去掉。
256+'A'= 321 , 的数值二进制位是 : 1 0100 0001 ,char只取一个字节范围内的值,高位的1就被去掉。
0100 0001 对应十进制就是65 ,它对应的字符就是'A‘。
参考链接:
ASCII码表,ASCII码一览表,ASCII码对照表完整版-ASCII码中文站
#include <stdio.h>
int main(void){
//https://www.habaijian.com/
char a;
int b = 256 +'A';
a=b;
printf("%c, %d\n", a, b);
return 0;
}
在c语言中,char类型可以转换为int类型,也就是说'A'加上一个整形数据,也就是ASCII码加256,A的ASCII码值为65,所以他的值为256+65就等于321。不懂的话可以私聊问我的