0x01 算数类型
算数类型分类
1、整型(包含了字符和布尔类型);
2、浮点型。
C++算术类型
类型尺寸的规定
1、基本的字符类型char确保可以存放机器基本字符集中的任意字符所对应的数字值,也就是说,一个char的大小和一个机器字节一样大(C++规定,一个字节至少要能容纳机器基本字符集中的字符);
2、C++标准只规定了尺寸的最小值,在规则内允许编译器赋予这些类型更大的尺寸;
3、C++规定一个int至少比一个short一样大,一个long至少和一个int一样大,一个long long至少和一个long一样大(long long类型是C++11 中的新定义);
4、浮点类型可表示单精度、双精度和扩展精度值;
5、C++标准顶顶了一个浮点数有效位数的最小值,一般来说,类型float和double分别有7和16个有效位,但大多数编译器都实现了更高的精度。
带符号类型和无符号类型
1、带符号类型可以表示0与正负数,无符号类型仅能表示大于等于0的数值;
2、为了得到无符号类型,可以在普通的类型名前加上unsigned,例如unsigned long;
3、unsigned int可以简写为unsigned;
4、字符型有char,signed char和unsigned char三种,重点是,char和signed char是不一样的类型。实际上字符型的表现形式只有带符号和无符号的两种,具体变现为哪一种是由编译器决定的;
5、C++标准并没有规定带符号类型应如何表示,但约定了在表示范围内正负值的数量应该平衡。
如何选择类型
1、如果确认数值不可能为负值,应选用无符号类型;
2、使用int执行整型运算。实际应用中,short常常太小,而long一般都和int一样大,如果数值超过了int的尺寸,选用long long;
3、在算术表达式中不要使用char或者bool类型。因为char是否带符号在不同机器上有不同的定义,bool类型也有不确定的因素。使用这样含有不确定因素的值可能造成程序移植上的隐患。如果一定需要这样使用,那么请明确指定它是signed char还是unsigned char;
4、双精度浮点和单精度浮点运算的性能相差无几,有时候可能双精度浮点运算更快。而且float的精度不够,所以执行浮点运算优先选择double;
5、long double提供了更高的精度,但是性能开销也随之增大,不容忽视,一般情况下是没有必要用它的。
0x02 类型转换
bool b = 42; //b为真
bool b = 42; //b为真
int i = b; //i = 1
int n = 3.14; //n = 3
int n = 3.14; //n = 3
double pi = n; //pi = 3.0
unsigned char c = -1; //假设char尺寸为8 bit,则c的值为255
signed char c2 = 256; //假设char尺寸为8 bit,则c的值为未定义
C++算术类型转换规则
-----------(我是分割线)-----------
这里的学习顺序基于《 C++ Primer(第五版)》,虽说这本书是C++神书,但如果没有一定的C语言基础,肯定很难一下子啃下来,特别是原书第一章说编写一个简单的程序,结果各种语句和输入输出流都出现了,最后还来个类简介,实在是有点让新手朦逼。就算有一定的C++基础,中文版的语言也略显拗口。
所以,我建议可以先用谭浩强的C/C++系列高校用书籍来打个基础。先别管网上对谭教授的教材评价如何,至少它能高效地带你入门。直接学习C++不是不可以,但毕竟C语言是一门经典的计算机语言,经久不衰,还衍生出了很多其他的计算机语言。学好C语言能培养出一种理解计算机语言的思维模式,以后学其他语言都可能事半功倍。
我个人的学习方式是“先看懂,后深入,再高效”。在这里会按照我的理解,尽量用简单的语言来解释C++的知识点,至少先看懂并让程序能用再说。如果有错欢迎指正。
文中可能有某些程序段来自pezy大神,自学C++的路上我有很多疑难都是在pezy大神的解释中顿悟。在此表示感谢!
任何地方如有侵权请立即联系删除。
-----------(我是分割线)-----------