二. 处理数据
2.1 简单变量
2.1.1 变量名
C++命名规则:
·在名称中只能使用字母字符、数字和下划线。
·名称的第一个字符不能是数字。
·区分大小写。
·不能将C++关键字用作名称。
·下划线打头的名称被保留给实现(编译器及其使用的资源)使用。
2.1.2 整型
C++的基本整型(按宽度递增的顺序排列)分别是char、short、int、long、long long,其中每种类型都有有符号版本和无符号版本。
·short至少16位;
·int至少与short一样长;
·long至少32位,且至少与int一样长;
·long long至少64位,且至少与long一样长。
一字节(byte)= 8位(bit)
2.1.3 无符号类型
使用关键字unsigned修饰声明:unsigned int、unsigned short、...
2.1.4 整型字面值
·第一位为1~9,则基数为10(十进制),例:93以10为基数;
·第一位为0,第二位为1~7,则基数为8(八进制),例:042相当于十进制34;
·前两位为0x或0X,则基数为16(十六进制),例:0x42相当于十进制66
2.1.5 bool类型
true为真,false为假。
2.2 const限定符
关键字const叫做限定符,它限定了声明的含义。常量被初始化后,其值就被固定了,编译器将不允许再修改该常量的值。常见做法是将名称首字母大写。创建常量的通用格式如下:
const type name = value;
应在声明中对const进行初始化。
2.3 浮点数
2.3.1 书写浮点数
第一种是常用的标准小数点表示法:12.34
第二种为E表示法:2.52e+8(表示2.52*10^8)、8.33E-4(表示8.33/10^4)
2.3.2 浮点类型
C++有三种浮点类型:float、double和long double。
2.3.3 浮点常量
1.234f、2.2L
2.3.4 浮点数的优缺点
优点:可以表示的范围大
缺点:浮点运算速度通常比整数运算慢,且精度将降低。
总结
C++对基本类型进行分类,形成了若于个族。类型signed char、short;int和 long统称为符号整型;它们的无符号版本统称为无符号整型;C++11新增了long long。bool、char、wchar_t、符号整教和无符号整型统称为整型;C++IF新增了char16_t和char32_t. float、double和 long double统称为浮点型。整数和浮点型统称算术( arithmetic)类型。
2.4 C++算数运算符
五种基本的C++算数运算符:+、-、*、/、%
2.4.1 运算符优先级和结合性
先乘除后加减,*、/、%优先级相同,优先级相同时,看操作数的结合性是从左向右还是从右向左,乘除是从左向右结合。
2.4.2 除法分支
除法运算符/的行为取决于操作数的类型。如果两个操作数都是整数,则C++将执行整数除法。如果其中至少有一个操作数是浮点数,则小数部分将保留,结果为浮点数。
运算符重载:使用相同的符号进行多种操作。
2.4.3 求模运算符
求模运算符返回整数除法的余数。
2.4.4 类型转换
· 将一种算数类型的值赋给另一种算数类型的变量时,C++将对值进行转换;
· 表达式中包含不同的类型时,C++将对值进行转换;
· 将参数传递给函数时,C++将对值进行转换。
1. 初始化和赋值进行的转换
C++允许将一种类型的值赋给另一种类型的变量,值将被转换为接受变量的类型。
将0赋给bool变量时,将被转换为false;而非零值将被转换为true。
2. 以{}方式初始化时进行的转换
C++将使用大括号的初始化称为列表初始化,列表初始化不允许缩窄。
3. 表达式中的转换
当运算涉及两种类型时,较小的类型将被转换为较大的类型。
4. 传递参数时的转换
传递参数时的类型转换通常由C++函数原型控制。
5. 强制类型转换
通用格式:
(typename) value
typename (value)
2.4.5 C++中的auto声明
使用关键字auto,编译器将把变量的类型设置成与初始值相同:
auto n = 100; // n is int
2.5 总结
C++的基本类型分为两组: 一组由存储为整数的值组成,另一组由存储为浮点格式的值组成。整型之间通过存储值时使用的内存量及有无符号来区分。整型从最小到最大依次是: bool、char、signed char、unsigned char、short、unsigned short、int、unsigned int、long、unsigned long以及C++11新增的long long和unsigned long long。还有一种 wchar_t类型,它在这个序列中的位置取决于实现。C++11新增了类型char16_t和 char32_t,它们的宽度足以分别存储16和32位的字符编码。C++确保了char足够大,能够存储系统基本字符集中的任何成员,而 wchar_t则可以存储系统扩展字符集中的任意成员,short至少为16位,而int至少与short一样长,long 至少为32位,且至少和 int一样长,确切的长度取决于实现。
字符通过其数值编码来表示。I/O系统决定了编码是被解释为字符还是数字。
浮点类型可以表示小数值以及比整型能够表示的值大得多的值。3种浮点类型分别是float、double和long double。C++确保float 不比double 长,而 double不比 long double长。通常, float使用32位内存, double使用64位,long double使用80到128位。
通过提供各种长度不同、有符号或无符号的类型,C++使程序员能够根据特定的数据要求选择合适的类型。
C++使用运算符来提供对数字类型的算术运算;加、减、乘、除和求模。当两个运算符对同一个操作数进行操作时,C++的优先级和结合性规则可以确定先执行哪种操作。
对变量赋值、在运算中使用不同类型、使用强制类型转换时,C++将把值从一种类型转换为另一种型。很多类型转换都是“安全的”,即可以在不损失和改变数据的情况下完成转换。例如,可以把 int值转换为long值,而不会出现任何问题。对于其他一些转换,如将浮点类型转换为整型,则需要更加小心。