首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数值类型的转换搞不清楚啊解决办法

2012-03-08 
数值类型的转换搞不清楚啊!有这么一些代码:char c-23int icprintf(%d,i)我认为最后的结果应该是输

数值类型的转换搞不清楚啊!
有这么一些代码:char c=-23;
  int i=c;
  printf("%d",i);
我认为最后的结果应该是输出233,但实际结果却是-23。。。。。。
我跟大家说一下我的思路,不知道哪里错了:
 首先int类型的有16位,char类型的有8位,
 则char c=-23就是把一个int类型的常量-23(11111111 11101001)复制给一个char类型的变量
结果是截断,将11101001赋给了char类型变量,所以现在变量c实际存放的是11101001
然后第二部int i=c的时候,把11101001赋给了00000000 00000000,结果是00000000 11101001,所以现在变量i实际存放的是00000000 11101001
这个数对应的十进制数是233;所以最终输出233

[解决办法]
char赋值给int会进行带符号扩展,前面补1而不是补0

如果你unsigned char c = -23; int i = c;的话出来就该是233了
[解决办法]

探讨
char
表示的数值范围是: -128 ~ 127
变量c存进去的不是int类型,而是char类型

热点排行