现象
程序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变量时,打印不了负值,会转为正值?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
1,我的芯片是stm32F4,int是32位的。
2,就算int是16位的,一个有符号char值,强制转换成有符号int值,也不会改变其符号位的,负的还是负的,正的还是正的。
3,char a = -123;int b = a;这里也是把char型a,强制转换为int型赋值给b。
4,你测试下就知道了,mdk里面的char默认类型是unsigned char。网上也能搜索到。
一周热门 更多>