【C/C++】基本数据类型的隐式类型转换
1.用一种类型的表达式赋值给另一种类型的对象,目标转换类型是被赋值对象的类型。
2.把一个表达式传给一个函数调用,表达式类型与形式参数类型不同,目标转换类型是形参类型;
从一个函数返回一个表达式,表达式的类型与返回类型不同,目标转换类型是函数的返回类型。
总之,一切以函数定义为准。
3.在混合类型的算术表达式中,目标转换类型为最宽的数据类型。
(1)如果一个操作数的类型是 long double ,那么另一个操作数无论是什么类型 ,都将被转换成 long double 。
如果两个操作数都不是 long double 型,那么当其中一个操作数的类型是 double 型,则另一个就将被转换成 double 型 。
如果两个操作数都不是 double 型 ,而其中一个操作数是 float 型 ,则另一个被转换成 float 型 。
float——>double——>long double
(2)如果一个操作数是 unsigned long 型 ,则第二个也被转换成 unsigned long 型。
如果两个操作数的类型都不是 unsigned long ,而其中一个操作数是 long 型 ,则另一个也被转换成 long 型 。
(只有一个例外:如果一个操作数是 long 型 而另一个是 unsigned int型 ,那么只有机器上的 long 型足够长以便能够存放 unsigned int 的所有值时unsigned int 才会被转换为 long 型 ,否则两个操作数都被提升为 unsigned int 型。一般来说在 32 位操作系统中 long 型和 int 型都用一个字长来表示 ,所以不满足这里的假设条件,所以可以认为long + unsigned int -> unsigned int)
若两个操作数都不是long型 而其中一个是unsigned int型 则另一个也被转换成unsigned int 型 。
long——>unsigned long
long+unsigned int ——> unsigned int
(3)在确定共同的目标提升类型之前,编译器将在所有小于int的整值类型上施加一个被称为“整值提升”的过程。
在进行整值提升时 ,类型 char ,signed char ,unsigned char 和 short int 都被提升为类型int 。
char+int => int
char+unsigned char => int
short+unsigned short => int
int + unsigned int => unsigned int
如果没有出现unsigned int,则类型转化为int。如果出现unsigned int,则转化为unsigned int。
【C/C++】基本数据类型的隐式类型转换相关推荐
- 数据类型,隐式类型转换
关于数据类型: 1.常量也是有类型的 常量数据大体分两类,一类是带点(实型,浮点型),一类是不带点叫整型. 编译器对带点,通常默认为double,不带点通常编译为int 2.对于数据 .2 ...
- c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast...
C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...
- C语言----表达式求值之隐式类型转换
前言: 表达式求值的顺序一部分是由操作符的优先级和结合性决定. 同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型,称为隐式类型转换,下面给出隐式类型转换的详细讲解,希望对大家有所帮助~ 隐 ...
- c++ 隐式类型转换
隐式类型转换由编译器自动执行,不需程序员介入. 何时发生隐式类型转换 1. 在混合类型的表达式中,操作数会被转换为相同类型 int ival; double dval; ival >= dval ...
- int转换为cstring_PostgreSQL 隐式类型转换探秘
个人简介 何小栋, 从事产品研发和架构设计工作,对Oracle.PostgreSQL有深入研究,ITPUB数据库版块资深版主.现就职于广州云图数据技术有限公司,系统架构师,博客:http://blog ...
- c语言float转换为int_C语言的隐式类型转换和显示类型转换
C语言是一种强类型语言,当使用一种类型的对象代替另外一种类型的对象进行操作时,必须首先进行类型转换. 类型转换的方式,一般可分为隐式类型转换和显示类型转换(也称为强制类型转换). 1.隐式类型转换 隐 ...
- js条件判断时隐式类型转换
Javascript 中,数字 0 为假,非0 均为真 在条件判断运算 == 中的转换规则是这样的: 如果比较的两者中有布尔值(Boolean),会把 Boolean 先转换为对应的 Number,即 ...
- C语言操作符详解 隐式类型转换 (整型提升 算数转换)
目录 一.算术操作符 二.左移操作符 右移操作符 1.二进制序列 2.左移操作符 3.右移操作符 3.1.逻辑运算/算术运算 3.2.对于移位运算符,不要移动负数位,这是标准未定义的 3.3.对于移位 ...
- JavaScript隐式类型转换
JavaScript隐式类型转换 基本数据类型 ECMAScript 一共定义了七种 build-in types,其中六种为 Primitive Value,Null, Undefined,Stri ...
最新文章
- netlogon启动后停止_自耦变压器降压启动原理
- 大家都在讨论裁员,我只想聊聊成长 !
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用...
- 第四十章:基于SpringBoot Quartz完成定时任务分布式多节点负载持久化
- HTTP Status 405 – Method Not Allowed HTTP method GET is not supported by this URL
- 软考已报名可以更改科目吗
- 关联容器的插入操作简单举例
- 【328天】每日项目总结系列066(2017.12.30)
- Multicast注册中心
- P1220-关路灯【区间dp】
- 奇虎回应委员退出360督导委员会 称流氓软件产业链已基本消灭
- 软考系统架构师笔记-案例分析重点(二)
- Docker 的4种网络模式
- 【机器学习】集成学习--AdaBoost
- 【clickhouse】clickhouse 表引擎之 Buffer
- Python 正则表达式(二)
- 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例
- 获取context path或者basePath
- jsp连接mysql数据库读不出数据,jsp连接Mysql数据库出现有关问题,
- 指数退避和AIMD为什么都青睐数字2