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

main()
{int a=353;
char b;
b=a;
printf("%c\n",b);
}
输出的是a

为什么?

b为字符型变量,单字节,a=353赋值给b时,由于超出单字节表达范围,产生溢出,实际赋给a的值是溢出后的余值,即 a%256 后的值,等于 97,而97对应的ascll字符是‘a’
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-30
变量b为char型,只有一个字节的存储空间,353超过了,所以做了截断,只保留的低字节,也就是353%256==97,也就是字符'a'的ascii码,所以输出字符a本回答被提问者采纳