分享一个很有意思的小tip
有人在编写代码时运行出了一个让人摸不着头脑的结果:

-20>0U 怎么会是真值呢??

这位朋友还特意检验了一下0U的值,当然是0没错。可是出现这样的结果到底是为什么呢?

这就涉及到c语言中的算术类型转换的问题了:
根据操作数的不同,某些运算符会引起操作数的值从某种类型转换成另一种类型。其效果是将所有操作数转换为同一公共类型,并以此类型为结果。

首先,如果任一操作数为long double类型,则另一操作数将转换为long double类型.

否则,如果任一操作数为double类型,则另一操作数将转换为double类型.

否则,如果任一操作数为float类型,则另一操作数将转换为float类型.

否则,同时对这两个操作数进行整型提升.

如果任一操作数为long int类型,另一操作数为unsigned int类型,此时取决于long int能不能表示完所有unsigned int类型的数。
如果可以则转换为long int; 如果不可以则将两个操作数都转换为unsigned long int类型

否则,如果任一操作数为long int类型,则另一操作数将转换为long int类型.

否则,如果任一操作数为unsigned int类型,则另一操作数将转换为unsigned int类型.(这也是对上面问题的解答)

否则两个操作数都转换为int类型.

算术类型转换、整型提升相关推荐

  1. C语言操作符详解 隐式类型转换 (整型提升 算数转换)

    目录 一.算术操作符 二.左移操作符 右移操作符 1.二进制序列 2.左移操作符 3.右移操作符 3.1.逻辑运算/算术运算 3.2.对于移位运算符,不要移动负数位,这是标准未定义的 3.3.对于移位 ...

  2. 隐式类型转换和整型提升

    c整型中的运算总是至少以缺省整型类型的精度来进行的,所以当字符型或者短整型在进行运算时为了获得这个精度,先要提升成普通整型,再运算. 例: char a=127; char b=1; char ret ...

  3. 类型转换:隐式转化(算数转换,整型提升,混合提升,赋值转换),强制转换【C语言】

    类型转换 隐式转化 算数转换 整型提升 混合提升 赋值转换 强制转换 编译器使用注意 小结 类型转换 隐式转化 不需要人为参与而产生的默认转称为隐式转化. 隐式转化,是计算机语言实现层面最难的,指针是 ...

  4. 隐式类型转换——C语言中的整型提升

    整型提升概念: C语言中的整型算术运算总是至少以缺省整型类型的精度来进行的. 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升. 整型提升的意义 三点说明 ...

  5. 一文搞明白整型提升,截断等相关概念【C语言】

    首先看一道题目: 如下程序输出的结果是: int main() {char a = 0xb6;short b = 0xb600;int c = 0xb6000000;if(a==0xb6)printf ...

  6. 一道关于整型提升/截断的经典练习题

    理解这道题目,能很好帮助我们理解整型提升与截断 : 下面程序的输出结果是: 题目解析 : 所以第一个 a+b 以 %d形式打印结果为300 第二个 unsigned char c 以 %d形式打印结果 ...

  7. c语言整形提升规则,C语言进阶:整型提升

    几乎每个程序员都学过C,而且大多数在他们的工作中使用C.很显然C是TIOBE(2012年11月时排榜首)上最流程的编程语言之一.然而,有时,C的行为会让人意外和困惑.其中一个例子就是**整型提升**. ...

  8. C/C++ 整型提升(Integral Promotion)

    前言: 先确认一个事实前提,我们知道C/C++中的char字符都有它对应的ASCII码(一般情况下0~127),那么对于一个char变量输出它的ASCII码则需要 int显示转换. 例如: <s ...

  9. C语言中的截断与整型提升

    C语言中的截断与整型提升 我们首先来看一段代码: #include<stdio.h> #include<stdlib.h> union Un//--联合体 { char c;i ...

最新文章

  1. 编写Makefile中遇到的各种奇葩问题汇总
  2. k8s系列~mgr的应用
  3. mysql5.7.11解压版_Mysql5.7.11在windows10上的安装与配置(解压版)_MySQL
  4. 文件自定义变量_awk 内置变量与自定义变量
  5. Discuz!NT 和网站整合
  6. 5W1H系列 | Nacos 帮我们解决什么问题?(配置管理篇)
  7. JS-面向对象--创建具有私有属性的对象(2个方法)
  8. php编写计算程序,PHP编写的小应用——计算器
  9. Spark的event事件监听器LiveListenerBus和特质SparkListenerBus以及特质ListenerBus
  10. SPD软件(医用耗材管理系统)应用效果分析
  11. 牛客网Java笔试题目
  12. VBA 字典方法及属性介绍
  13. 【回归预测-ELM预测】基于遗传算法优化极限学习机实现风电数据回归预测附matlab代码
  14. OpenBSD安装(转)
  15. 中文事件抽取研究综述
  16. 毫秒数转换为时间计时天数
  17. 8bit位图保存为1bit
  18. 关于mac苹果电脑装win10系统发热严重的解决方法
  19. 线上盲盒的优势有哪些?
  20. VIC运行笔记2019.05.01

热门文章

  1. UVa11137 Ingenuous Cubrency
  2. Cannot fit requested classes in a single dex file. Try supplying a main-dex list.
  3. http://w3cschool.codecloud.net/python/python-object.html?ref=myread
  4. OpenJDK8基础类库包清单
  5. Java序列化报错serialVersionUID不一致
  6. input的属性AutoComplete——关闭浏览器文本框自动提示
  7. java 数组地图绘画_Java将地图转换为数组[Snippet]
  8. 多表操作查询 一对一
  9. centos中文目录换成英文目录
  10. leetcode 387 C++数组做法