算术类型转换、整型提升
分享一个很有意思的小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类型.
算术类型转换、整型提升相关推荐
- C语言操作符详解 隐式类型转换 (整型提升 算数转换)
目录 一.算术操作符 二.左移操作符 右移操作符 1.二进制序列 2.左移操作符 3.右移操作符 3.1.逻辑运算/算术运算 3.2.对于移位运算符,不要移动负数位,这是标准未定义的 3.3.对于移位 ...
- 隐式类型转换和整型提升
c整型中的运算总是至少以缺省整型类型的精度来进行的,所以当字符型或者短整型在进行运算时为了获得这个精度,先要提升成普通整型,再运算. 例: char a=127; char b=1; char ret ...
- 类型转换:隐式转化(算数转换,整型提升,混合提升,赋值转换),强制转换【C语言】
类型转换 隐式转化 算数转换 整型提升 混合提升 赋值转换 强制转换 编译器使用注意 小结 类型转换 隐式转化 不需要人为参与而产生的默认转称为隐式转化. 隐式转化,是计算机语言实现层面最难的,指针是 ...
- 隐式类型转换——C语言中的整型提升
整型提升概念: C语言中的整型算术运算总是至少以缺省整型类型的精度来进行的. 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升. 整型提升的意义 三点说明 ...
- 一文搞明白整型提升,截断等相关概念【C语言】
首先看一道题目: 如下程序输出的结果是: int main() {char a = 0xb6;short b = 0xb600;int c = 0xb6000000;if(a==0xb6)printf ...
- 一道关于整型提升/截断的经典练习题
理解这道题目,能很好帮助我们理解整型提升与截断 : 下面程序的输出结果是: 题目解析 : 所以第一个 a+b 以 %d形式打印结果为300 第二个 unsigned char c 以 %d形式打印结果 ...
- c语言整形提升规则,C语言进阶:整型提升
几乎每个程序员都学过C,而且大多数在他们的工作中使用C.很显然C是TIOBE(2012年11月时排榜首)上最流程的编程语言之一.然而,有时,C的行为会让人意外和困惑.其中一个例子就是**整型提升**. ...
- C/C++ 整型提升(Integral Promotion)
前言: 先确认一个事实前提,我们知道C/C++中的char字符都有它对应的ASCII码(一般情况下0~127),那么对于一个char变量输出它的ASCII码则需要 int显示转换. 例如: <s ...
- C语言中的截断与整型提升
C语言中的截断与整型提升 我们首先来看一段代码: #include<stdio.h> #include<stdlib.h> union Un//--联合体 { char c;i ...
最新文章
- 编写Makefile中遇到的各种奇葩问题汇总
- k8s系列~mgr的应用
- mysql5.7.11解压版_Mysql5.7.11在windows10上的安装与配置(解压版)_MySQL
- 文件自定义变量_awk 内置变量与自定义变量
- Discuz!NT 和网站整合
- 5W1H系列 | Nacos 帮我们解决什么问题?(配置管理篇)
- JS-面向对象--创建具有私有属性的对象(2个方法)
- php编写计算程序,PHP编写的小应用——计算器
- Spark的event事件监听器LiveListenerBus和特质SparkListenerBus以及特质ListenerBus
- SPD软件(医用耗材管理系统)应用效果分析
- 牛客网Java笔试题目
- VBA 字典方法及属性介绍
- 【回归预测-ELM预测】基于遗传算法优化极限学习机实现风电数据回归预测附matlab代码
- OpenBSD安装(转)
- 中文事件抽取研究综述
- 毫秒数转换为时间计时天数
- 8bit位图保存为1bit
- 关于mac苹果电脑装win10系统发热严重的解决方法
- 线上盲盒的优势有哪些?
- VIC运行笔记2019.05.01
热门文章
- UVa11137 Ingenuous Cubrency
- Cannot fit requested classes in a single dex file. Try supplying a main-dex list.
- http://w3cschool.codecloud.net/python/python-object.html?ref=myread
- OpenJDK8基础类库包清单
- Java序列化报错serialVersionUID不一致
- input的属性AutoComplete——关闭浏览器文本框自动提示
- java 数组地图绘画_Java将地图转换为数组[Snippet]
- 多表操作查询 一对一
- centos中文目录换成英文目录
- leetcode 387 C++数组做法