现象
程序1
char abc = -123;
printf("magic number = %d
", -123);
printf("abc = %d
", abc);
打印结果:
magic number = -123
abc = 133
程序2
short abc = -123;
printf("magic number = %d
", -123);
printf("abc = %d
", abc);
打印结果:
magic number = -123
abc = -123
疑问
为什么printf打印char变量时,打印不了负值,会转为正值?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
第一个问题
b还是-123
第二个问题
abc为short时 为双字节!!
char是一个字节!!
short跟int是一个数据类型 都是双字节!!
char强转为int符号位是要变位置的!!
char的-123 为1000 0101
int的-123为1000 0000 0000 0101
你输出错误是因为printf把你的char 1000 0101
转换为了 int 0000 0000 1000 0101
如果 你把你的char 1000 0101
强转int 那就成了1000 0000 0000 0101
然后在%d输出 这样就是正确的结果 懂了么?
一周热门 更多>