博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于print时的强制类型转换
阅读量:5942 次
发布时间:2019-06-19

本文共 414 字,大约阅读时间需要 1 分钟。

int main(int argc, char *argv[])

   short a = 0xffff;
 
   printf("a = 0x%x\n", a);

  if(a == 0xffff) 

  {

    printf("Just Test\n");

  }

  return 0;

}

 

最后输出的结果是 a = 0xffffffff

原因如下:

1.%x 表示要输出无符号整数(unsigned int)的十六进制形式

2.当有符号类型向更大长度类型转换时,如果首位为1,则前面全部补全为1,如首位为0,则前面全部补全为0

预期的打印Just Test不会被打出来,因为:

在比较时a被强制转换成unsigned int(即0xffffffff)  与 0x0000ffff比较不相等

转载于:https://www.cnblogs.com/li-hao/archive/2011/09/25/2190006.html

你可能感兴趣的文章
python核心-类-1
查看>>
【php】
查看>>
关于存session,cookie还是数据库或者memcache的优劣,部分网上抄录
查看>>
链表原理
查看>>
springboot springcloud 热部署
查看>>
微软职位内部推荐-SENIOR SOFTWARE ENGINEER
查看>>
浏览器兼容性问题
查看>>
unp #9 (reading notes) (Unix Domain)
查看>>
树莓派无线网上网
查看>>
测试警示名言
查看>>
Alpha 冲刺报告(6/10)
查看>>
RocketMQ 4.5.1 双主双从异步复制环境搭建
查看>>
idea springboot jrebel hotreloaded
查看>>
领域驱动设计:软件核心复杂性应对之道
查看>>
第七周作业
查看>>
redis单机版安装
查看>>
js对象引用传递
查看>>
【PHP开发规范】继承与扩展:PSR-2 编码风格规范
查看>>
关于如何在MyEclipse下修改项目名包名,以及类
查看>>
组合函数combn
查看>>