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. 数据类型,隐式类型转换

     关于数据类型: 1.常量也是有类型的 常量数据大体分两类,一类是带点(实型,浮点型),一类是不带点叫整型. 编译器对带点,通常默认为double,不带点通常编译为int 2.对于数据   .2  ...

  2. c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast...

    C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...

  3. C语言----表达式求值之隐式类型转换

    前言: 表达式求值的顺序一部分是由操作符的优先级和结合性决定. 同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型,称为隐式类型转换,下面给出隐式类型转换的详细讲解,希望对大家有所帮助~ 隐 ...

  4. c++ 隐式类型转换

    隐式类型转换由编译器自动执行,不需程序员介入. 何时发生隐式类型转换 1. 在混合类型的表达式中,操作数会被转换为相同类型 int ival; double dval; ival >= dval ...

  5. int转换为cstring_PostgreSQL 隐式类型转换探秘

    个人简介 何小栋, 从事产品研发和架构设计工作,对Oracle.PostgreSQL有深入研究,ITPUB数据库版块资深版主.现就职于广州云图数据技术有限公司,系统架构师,博客:http://blog ...

  6. c语言float转换为int_C语言的隐式类型转换和显示类型转换

    C语言是一种强类型语言,当使用一种类型的对象代替另外一种类型的对象进行操作时,必须首先进行类型转换. 类型转换的方式,一般可分为隐式类型转换和显示类型转换(也称为强制类型转换). 1.隐式类型转换 隐 ...

  7. js条件判断时隐式类型转换

    Javascript 中,数字 0 为假,非0 均为真 在条件判断运算 == 中的转换规则是这样的: 如果比较的两者中有布尔值(Boolean),会把 Boolean 先转换为对应的 Number,即 ...

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

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

  9. JavaScript隐式类型转换

    JavaScript隐式类型转换 基本数据类型 ECMAScript 一共定义了七种 build-in types,其中六种为 Primitive Value,Null, Undefined,Stri ...

最新文章

  1. netlogon启动后停止_自耦变压器降压启动原理
  2. 大家都在讨论裁员,我只想聊聊成长 !
  3. Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用...
  4. 第四十章:基于SpringBoot Quartz完成定时任务分布式多节点负载持久化
  5. HTTP Status 405 – Method Not Allowed HTTP method GET is not supported by this URL
  6. 软考已报名可以更改科目吗
  7. 关联容器的插入操作简单举例
  8. 【328天】每日项目总结系列066(2017.12.30)
  9. Multicast注册中心
  10. P1220-关路灯【区间dp】
  11. 奇虎回应委员退出360督导委员会 称流氓软件产业链已基本消灭
  12. 软考系统架构师笔记-案例分析重点(二)
  13. Docker 的4种网络模式
  14. 【机器学习】集成学习--AdaBoost
  15. 【clickhouse】clickhouse 表引擎之 Buffer
  16. Python 正则表达式(二)
  17. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例
  18. 获取context path或者basePath
  19. jsp连接mysql数据库读不出数据,jsp连接Mysql数据库出现有关问题,
  20. 指数退避和AIMD为什么都青睐数字2

热门文章

  1. Mac Safari浏览器的阅读列表与iPhone、iPad (iOS)不同步的问题
  2. oracle如何调试sql,调试oracle与调试sql server存储过程
  3. Keepalived 配置实例
  4. org.apache.hadoop 的jar包下载地址
  5. BIND配置文件详解(二)
  6. 漏洞挖掘利器-Fuzz技术介绍
  7. linux(CentOS)下Mrtg的安装詳解
  8. 初学linux网络服务之HTTP服务实验
  9. url-pattern配置技巧
  10. iPhone 不能读取plist文件!?