int i = -;
printf("%d \n", - < sizeof(int) ); 结果输出: 0

在写程序时,经常对于比较很随意,特别是类型不同时,然而这带来的错误也是意想不到,却理所当然。

剖析:

  1. sizeof(int) 结果返回unsigned int ,值为4
  2. i是int类型, int 与 unsigned int 比较,导致 i 隐式转换为 unsigned int
  3. 故最终比较 0xFFFFFFFF < 0x04 结果是0

隐式类型转换

算术转换

进行算术运算(加、减、乘、除、取余以及符号运算)时,不同类型数招必须转换成同 一类型的数据才能运算,算术转换原则为

(1)整型提升:对于所有比int小的类型,包括char, signed char, unsigned char, short, unsigned short,首先会提升为int类型

(2)高于整型类型提升:

     (3) 在进行运算时,以表达式中最长类型为主,将其他类型位据均转换成该类型。

    (4) 有符号和无符号之间的转换,signed会转换为unsigned。 包含signed与unsigned int,如果int恰好为负数,其结果为对unsigned取值个数求模的结果。比如将-1赋给8位的unsigned char,呢么结果就是255(-1对256取模后的值)。unsigned char取值范围0~255。

赋值转换

进行赋值操作时,赋值运算符右边的数据类型必须转换成赋值号左边的类型,若右边的数据类型的长度大于左边,则要进行截断或舍入操作。

输出转换

在程序中将数据用printf函数以指定格式输出时,当要输出的盐据类型与输出格式不符时,便自动进行类型转换,如一个long型数据用整型格式(%d)输出时,则相当于将long型转换成整型(int)数据输出;一个字符(char)型数据用整型格式输出时,相当于将char型转 换成int型输出。

注意:较长型数据转换成短型数据输出时,其值不能超出短型数据允许的值范围,否则 转换时将出错。如:

long a=80000;

printf("%d",a);

运行结果为14464,因为int型允许的最大值为32767,80000超出此值,故结果取以32768为模的余数,即进行如下取余运算:

(80000-32768)-32768=14464;

    输出的数据类型与输出格式不符时常常发生错误。

bool转换

    如果不为0则真, 为0则假, Null(0) 为假。

最新文章

  1. 佳能6d 魔灯
  2. [ASE][Daily Scrum]11.19
  3. Distributed Result Grouping Caveats
  4. php部分---include()与require()的区别、empty()与isset is_null的区别与用法详解
  5. Ubuntu 16.04配置OpenCV 3.1.0 for Java
  6. c++ 学习笔记 c++ 引用C库注意点:#ifdef __cplusplus 倒底是什么意思?
  7. 安装Ubuntu时的硬盘分区
  8. 性能测试分享:Jmeter的api监控工具解决方案
  9. UML 解析
  10. [POI2014]KUR-Couriers
  11. C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
  12. MyBatis - 4.动态SQL
  13. Flask--第三个例子,写一个接口,该接口返回html前端页面,模板的使用
  14. 使用soupUI做接口测试
  15. 选择结构的三角关系Switch、Case、Default!!!
  16. 你可能不知道的github语法——图标
  17. 【转】对random_state参数的理解
  18. python logging模块,升级print调试到logging。
  19. twitter 等网站console.log不能使用,可用alert或者
  20. AbpZero之企业微信---登录(拓展第三方auth授权登录)---第一步:查看AbpZero的auth第三方登录的底层机制

热门文章

  1. LoadRunner性能测试之常见函数及参数的说明和作用
  2. nodejs封装的webget webpost方法
  3. python--requests库 安装及简单使用
  4. maven如何实现创建带源代码的jar包
  5. POJ-3190 Stall Reservations---优先队列+贪心
  6. 【HHHOJ】ZJOI2019模拟赛(十四)03.12 解题报告
  7. BZOJ 4247 挂饰 01背包
  8. Java 类加载体系之 ClassLoader 双亲委托机制
  9. path、classpath理解
  10. 当Java遇见了Html--Servlet篇