c++的准备知识14

1.表达式中的转换。当同一个表达式中包含两种不同的算术类型时,C++将执行两种自动转换:首先,
  一些类型中出现时会自动转换:其次,有些类型中与其他类型同时出现是在表达式中时,将被转换
  先看自动转换,在计算表达式时,C++将boll,char,unsigned,char,signedchar和short值转
  换为int。具体的说true被转换为1.falsc被转换为0.这些转换被称为整形提升,例如
  short chickens = 20;
  short ducks = 35;
  short fowl = chickens + ducks;
  为执行第三行语句C++程序取得chickens和ducks的值,并将它们转换为int。然后,程序将结果转换
  为short型,因为结果将被赋给一个short变量。通常将int类型选择为计算机最自然的类型,这意味着
  计算机使用这种类型时,运算速度可以最快。
  还有一些其他提升,如果short比int短,则unsigned short类型将被转换为int:如果两种类型长度
  相同unsigned short类型转被转换成unsigned int。这种规则确保了在对unsigned short 进行提升
  时不会损失数据。

2.wchar_t被提升为下列类型中的一个宽度足够存储wchar_t取值范围的类型:int,unsigned int,long
  或unsigned long。
  将不同类型进行算术运算时,也会进行一些转换,例如将int 和float相加时,当运算设计两种类型时,
  较小的类型将被转换为较大的类型。编译器通过校验表来确定在算是表达式中执行的转换。

3.C++校验表:
  1.如果有一个操作数的类型是long double,则将另一个操作数转换为long double。
  2.否则,如果有一个操作数的类型是double,则将另一个操作转换为double。
  3.否则,如果有一个操作数类型是float,则将另一个操作转换为float。
  4.否则,说明操作数都是整型,因此执行整型提升。
  5.在这种情况下,如果两个操作数都是有符号或无符号的,且其中一个操作数的级别比另一个级别低,则
    转换为级别更高的类型。
  6.如果一个操作数为有符号的,另一个操作数为无符号的,且无符号操作数的级别比有符号操作数高,则将
    有符号操作数转换为无符号操作数所属的类型。
  7.否则,如果有符号类型可以表示无符号类型的所有可能取值,则将无符号操作数转换为有符号操作数所属
    类型。
  8.否则,将两个操作数都转换为有符号类型的无符号版本。
  有符号整型按级别从高到低依次为long long,long,int,short和signed char。无符号整型的排列顺序
  与有符号整型相同。类型char,signed char 和unsigned char 的级别相同。类型bool的级别最低。
  wchar_t,char16_t,和char32_t的级别与其底层类型相同。

4.传递参数时的转换:传递参数时的类型转换通常由C++函数原型控制,然而,也可以取消原型对参数传递的
  控制,尽管这样并不明智。在这种情况下,C++将对char和short类型应用整型提升。另外,为毛吃与传统C
  语言中大量代码的兼容性,在将参数传递给取消原型对参数传递控制的函数时,C++将float参数提升为double。

时间: 2024-10-12 04:26:08

c++的准备知识14的相关文章

linux基础知识-14

一个有趣的逻辑,把一个文件保存在两个地方,但只有一份, 或者说用两个不同的文件名保存一个文件,这种思想有些反人类,但这就是linux下的硬链接. 下面是见证奇迹的时刻,老陌认真的做了这个例子,一来是巩固一下之前学习的知识,二来体验一下硬链接. 故事是这样的-- 某天一个帅哥(kevin),一个美女(alice)来找老陌,他们要共同编写一本小说,想让老陌在服务器上创建两个账号,他们谁有空闲时间就登录服务器进行编写.由于是共同合作编写,所以他们不想每写一点就通过email传来传去,之后拼接整理,很麻

linux云自动化运维基础知识14(设备挂载)

####1.设备访问####1.设备识别/dev/xdxn        ##硬盘设备/dev/sda1/dev/cdrom        ##光驱/dev/mapper/*        ##虚拟设备 2.设备的使用##<设备的发现>##fdisk -l        ##查看真实存在的设备cat /proc/partitions    ##系统能够识别的设备blkid            ##系统能够挂载使用的设备iddf            ##查看设备被系统使用的情况 ##<

javascript基础知识(14) void

我们经常会使用到 javascript:void(0) 这样的代码,那么在 JavaScript 中 javascript:void(0) 代表的是什么意思呢? javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值. 语法格式如下: <a href="javascript:void(0)">单击此处什么也不会发生</a> 当用户链接时,void(0

零基础如何学好大数据?必备需要学习知识

大数据是对海量数据进行存储.计算.统计.分析处理的一系列处理手段,处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据处理手段所无法完成的,其涉及的技术有分布式计算.高并发处理.高可用处理.集群.实时性计算等,汇集了当前IT领域热门流行的IT技术. 想要学好大数据需掌握以下技术: Java编程技术 Java编程技术是大数据学习的基础,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具,

学习大数据需要掌握的知识,需要学习的数据技术

大数据的发展历程总体上可以划分为三个重要阶段,萌芽期.成熟期和大规模应用期,20世纪90年至21世纪初,为萌芽期,随着,一批商业智能工具和知识管理技术的开始和应用,度过了数据萌芽,21世纪前十年则为成熟期,主要标志为,大数据解决方案逐渐走向成熟,形成了并行计算与分布式系统两大核心技,谷歌的GFS和MapReduce等大数据技术受到追捧,Hadoop平台开始大行期道,2010年以后,为大规模应用期,标志为,数据应用***各行各业,数据驱动决策,信息社会智能化程度快速提高. 数据时代的到来,也推动了

读《暗时间》总结

国庆花了一两天的时间把刘未鹏的<暗时间>粗略地读了一遍,该书是思维学和方法论方面的一本通俗读物,整本书给我带来的最重要的收获就是: 1.我们要无时不刻地思考,睡前思考,走路思考,饭前饭后思考,上厕所也要思考,要时刻留一两个问题在脑袋里,让你的小CPU时刻保持运转状态,充分利用好"暗时间",这样你就会比别人多出一大块的生命.表面上看,时间对于每个人来说都是公平地平等的,但是如果你充分利用好"暗时间"的话,你的时间将是别人的数倍之多. 2.你要比别人多往前看

2014年安全工程师考试,赶考在线名师授课,一次通过

一.考试时间: 2014年安全工程师考试时间:9月6.7日,具体科目安排如下: 9月6日 9:00—11:30:安全生产法及相关法律知识 14:00—16:30:安全生产管理知识 9月7日 9:00—11:30:安全生产技术 14:00—16:30:安全生产事故案例分析    二.考试科目: 注册安全工程师考试科目分为四科,分别是:<安全生产法及相关法律知识><安全生产管理知识><安全生产技术>和<安全生产事故案例分析>,所有科目必须在连续两个年度内全部通过

精通iOS开发》书籍目录

1.欢迎来到iOS和Swift世界 2.创建一个新项目 3.实现基本交互 4.更丰富的用户界面 5.自动旋转和自动调整大小 6.多视图应用 7.分页栏与选取器 8.表视图简介 9.导航控制器和表视图 10.集合视图 11.分割视图和浮动窗口 12.应用设置和用户默认设置 13.数据持久化基础知识 14.文档和iCloud 15.Grand Central Dispatch和后台处理 16.使用Core Graphics绘图 17.Sprite Kit游戏框架 18.轻点.触摸和手势 19.Cor

关于大数据相关的问答汇总,持续更新中~

NO.1 想要学好大数据需掌握哪些技术? 答:1,Java编程技术 Java编程技术是大数据学习的基础,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具,因此,想学好大数据,掌握Java基础是必不可少的! 2.Linux命令 对于大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制,因此,想从事大数据开发相关工作,还需