面向对象编程(OOP)的本质是设计并扩展自己的数据类型。设计自己的数据类型就是让类型与数据匹配。
内置的C++类型分两组:基本类型和符合类型。
为把信息存储在计算机中,程序必须记录3个基本属性:
- 信息将存储在哪里;
- 要存储什么值;
- 存储何种类型的信息。
1、必须遵循的C++命名规则:
在名称中只能使用字母字符、数字和下划线(_)。
名称的第一个字符不能是数字。
区分大小写。
不能将C++关键字用作名称。
以两个下划线或下划线和大写字母大头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。(像_temp_stop或_Sunny这样的名称不会导致编译器错误,不是非法的,而会导致行为的不确定性。)
C++对于名称的长度没有限制,名称中所有的字符都有意义,但有些平台有长度限制。
2、计算机内存的基本单元是位(bit)。
字节(byte)通常指的是8位的内存单元。从这个意义上说,字节指的就是描述计算机内存量的度量单位,1KB = 1024 byte,1MB = 1024 KB。然而,C++对字节的定义与此不同,C++字节由至少能够容纳实现的基本字符集的相邻位组成,即可能取值的数目必须等于或超过字符数据。
总结:
C++的基本类型分为两组:一组由存储为整数的值组成,另一组由存储为浮点格式的值组成。整型之间通过存储值时使用的内存量及有无符号来区别。整型从最小到最大依次是:bool、char、signed char、unsigned char、short、unsigned short、int、unsigned int、long、unsigned long以及C++11新增的long long和unsigned long long。
通过提供各种长度不同、有符号或无符号的类型,C++使程序员能够根据特定的数据要求选择合适的类型。
C++使用运算符来提供对数字类型的算术运算:加、减、乘、除和求模。当两个运算符对同一个操作数进行操作时,C++的优先级和结合性规则可以确定先执行哪种操作。
对变量赋值、在运算中使用不同类型、使用强制类型转换时,C++将把值从一种类型转换为另一种类型。很多类型转换都是“安全的”,即可以在不损失和改变数据的情况下完成转换。
复习题:
1、为什么C++有多种整型?
答:有多种整型类型,可以根据特定需求选择最适合的类型。例如,可以使用short来存储空格,使用long来确保存储容量,也可以寻找可提高特定计算的速度的类型。
2、声明与下述描述相符的变量。
a.short整数,值为80
b.unsigned int整数,值为42110
c.值为3 000 000 000的整数
答:short k = 80; //或short int k = 80;
unsigned int q =42110; //或unsigned int q =42110;
unsigned long ants = 3 000 000 000 //或 long long ants = 3 000 000 000
3、C++提供了什么措施来防止超出整型的范围?
答:C++没有提供自动防止超出整型限制的功能,可以使用头文件climits来确定限制情况。
4、33L和33之间有什么区别?
答:常量33L的类型为long,常量33的类型为int。
5、下面两条C++语句是否等价?
char grade = 65;
char grade = ‘A’;
答:这两条语句并不真正等价,虽然对于某些系统来说,它们是等效的。最重要的是,只有在使用ASCII码的系统上,第一条语句才将得分设置为字母A,而第二条语句还可用于使用其他编码的系统。其次,65是一个int常量,而‘A’是一个char常量。
6、如何使用C++来找出编码88表示的字符?指出至少两种方法。
char c = 88; cout<<c<<endl; //输出char类型
cout.put(char(88)) ; //put()输出char类型
cout<<char(88)<<endl; //新型类型将值转换为char
cout<<(char)88<<endl; //旧式类型将值转换为char