专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

强制类型转换的疑点

发布时间:2011-06-28 11:27:18 文章来源:www.iduyao.cn 采编人员:星星草
强制类型转换的疑问
代码如下:

#include <stdio.h>

int main(){
unsigned int x = 0xdeadbeef;
unsigned short y = 0xffff;
signed int z = -1;

printf("0x%x\n", y);
printf("0x%x\n", (signed short)y);
return 0;
}


运行结果如下:


为什么转换为signed short就会变成32bits? 求指教
------解决方案--------------------
printf 把输入的参数中小域32bit的参数提升为 int进行处理, 无符号的0xffff执行0扩展即提升为 0x0000ffff , 而有符号的0xffff执行符号位扩展则会提升为 0xffffffff
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: