4.1 算数类型转换
类型转换通常存在于任意两个算数类型中,当必要时,编译器隐式地执行它们,如果新类型能够表示它,此种转换将保护它的值,这通常也并不绝对,例如,当你将一个负数转换为无符号类型,或将一个浮点数的小数部分由double转换为int时,新类型不能表示原来的值,在这种情况下,编译器会产生一个告警。
4.1.1 类型的层次
当算术操作数具有不同的类型时,隐式类型转换由类型的层次来决定,类型的层次依据下列规则:
l 任意两个无符号整数类型具有不同的转换等级,如果一个比另一个宽,它将具有较高等级;
l 每一个有符号整数类型具有与相应的无符号整数类型相同的转换等级,char、signed char和unsigned char 具有相同的转换等级;
l 标准的整数类型等级排列如下:
_Bool < char < short < int < long < long long
l 任意标准整数类型具有比同样宽度的扩展整数类型较高的等级;
l 每一个枚举类型具有与相应的整数类型相同的等级;
l 浮点类型以下下顺序排列:
Float < double < long double
l 等级最低的浮点型float的等级高于任何整数类型;
l 每一个复数浮点类型具有与其实数类型和虚数类型相同的等级。
4.1.2整数提升
在任何表达式中,你通常可以使用一个其类型等级低于int的值来替代int 或 unsigned int类型操作数,你也可以将位域当做整数类型操作数来使用,在这种情况下,编译器使用整数提升,任何类型级别低于int的半自动被转换为int类型,倘若int类型能够表示所有操作数原来的类型;如果int不足以表达,操作数会被转换为unsigned int。
整数提升通常保护操作数的值,一些例子如下:
Char c = ‘?’;
Unsigned short var = 100;
If (c < ‘A’) //The character constant ‘A’ has type int; the value
//of c is implicitly promoted to int for the comparison.
Var = var + 1; //Before the addition, the value of var is promoted to int
// or unsigned int.
在最后这个语句中,在执行加法操作前,编译器将第一个加数的类型提升为int或unsigned int,如果int和short具有相同的宽度,就像在16位机器上,这时,带符号的int类型没有足够的宽度来表示unsigned short类型var的所有值,此种场景下,变量的值被提升为unsigned int,在加法执行以后,结果转换为unsigned short。
分享到:
相关推荐
·提供了mysql语句、函数、配置选项和实用工具的一个完整手册。 ·给出了几个指导章节用于帮助新手入门。 ·为php、perl和c语言提供了应用程序编程接口(api)。 ·在每章的api开头部分提供了简要的指南。 ...
02H3 C VEPC3200核心网故障处理手册pdf 03H3CBBU3100系列基带处理单元故障处理手册,p 04H3 C VEPC3200产品开局自检手册pdf 05H3 C VMEGW3200技术白皮书pdf 06移动通信技术概述pdf 07H3CEPC3108核心网特性手册(E2123)...
C程序员在编写程序时手头一定要有这本书。在这本书中,C 语言专家 Peter Prinz和Tony Crawford为你提供大量的编程参考信息。全书叙述清晰,语句简洁,分析深刻。本书主题包括: C 语言的语法、GNU编译器选项、标准...
C语言核心技术是C语言工程师常用的手册知道,是外文翻译过来的,通俗易懂,适合初学者以及开发人员
C++核心编程技术 .rar http://down.qiannao.com/space/file/yuexingchen2/-4e0a-4f20-5206-4eab/C-002b-002b-0020-0020-00b7C-0020-0020vc/C-002b-002b-6838-5fc3-7f16-7a0b-6280-672f-0020.rar/.page C程序100例 ....
目前还没翻译完成,持续更新中,第一次翻译,遇到其中的错误请大家留言提醒,谢谢。
ALIENTEK STM32H750核心板底板 PDF原理图+AD集成封装库+主要器件技术手册: 集成封装库: 3.5TFTLCD封装库.IntLib ATK-4.3' TFTLCD电容触摸屏模块_V1.2.IntLib ATK-4342 4.3寸RGB屏模块封装库.IntLib ATK-7016&7084 ...
迅为iTOP4412核心板配套开发底板ALTIUM设计硬件(原理图+PCB)+核心器件技术手册,2层板设计,大小为192x108mm,双面布局布线,Altium Designer 设计的工程文件,包括完整的原理图及PCB文件,可以用Altium(AD)软件打开...
书名:JSP 2.0 技术手册(电子书) 格式:PDF 出版:电子工业出版社 作者:林上杰、林康司 本书图文并茂,以丰富的实例为引导,全面介绍了主流的 Java Web 开发技术—— JSP 2.0,重点介绍Java在展示层的两项重要技术...
迅为iTOP4412核心板配套开发底板cadence设计硬件(原理图+PCB)+核心器件技术手册,2层板设计,大小为192x108mm,双面布局布线,cadence 设计的原理图PCB工程文件,包括完整的原理图及PCB文件,可以用Altium(AD)软件...
·提供了mysql语句、函数、配置选项和实用工具的一个完整手册。 ·给出了几个指导章节用于帮助新手入门。 ·为php、perl和c语言提供了应用程序编程接口(api)。 ·在每章的api开头部分提供了简要的指南。 ...
这是一套Java核心技术基础使用手册,包含Java 基础核心总结、Java核心基础、Java核心知识、Java 基础面试题总结等,内含最强 Java 核心知识点整理及思维导图,需要的朋友可下载试试! Java是一门编程语言,Java发展...
ALIENTEK STM32F750核心板+开发底板PDF原理图+AD集成封装库+主要器件技术手册,ALTIUM集成封装库器件列表: Library Component Count : 63 Name Description ----------------------------------------------------...
STM32F767单片机核心板+开发底板PDF原理图+AD集成封装库+主要器件技术手册:3710FXXX037XXFX01.pdf 3710MXXX046XXFX01.pdf AMS1117.pdf AP3216C.pdf AT24C02.pdf AT8574_8574A_DS001V1.2.pdf CAT6219.pdf CH340.pdf ...
H3C S9500系列交换机是H3C公司面向以业务为核心的企业网络架构而推出的新一代核心路由交换机,该产品基于H3C公司自适应安全网络的技术理念,在提供大容量、高性能L2/L3交换服务基础上,进一步融合了硬件IPv6、网络...
ALIENTEK STM32F767(核心板+开发底板)PDF原理图+AD集成封装库+主要器件技术手册,集成封装库部分型号器件列表: AMS1117 AP3216C ALS+PS Sensor ATK-HC05 ATK-HC05 BAT BEEP BUTTON C CAP CH340G USB2UART D DB...
TI基于KeyStone的8核固定浮点数字信号处理器,DSP集成C66x CorePac,每个核心在1至1.25 GHz到10 GHz的运行。
H3C MSR 50系列多业务开放路由器包含MSR 50-40和MSR 50-60两款设备,该系列产品可以为大型分支机构提供高性能、多业务的一体化网络方案,也可以作为大中型企业的核心网络设备,完成数据、语音、视频等多种流量的广域...