我是K,我致力于网络安全。
在上一章中,我们已经学习完了C++的初步知识了。从今天开始,我们就进入C++第二章的学习--C++数据的存储、表示形式和基本运算。接下来,就让我们开始今天的学习。
本章前言:
要利用计算机进行程序设计,应当了解数据在计算机中是怎样存储的,知道数据在程序中的表示形式,掌握在程序中怎样对数据进行运算。只有掌握了这些基本知识,才能顺利地进入C++程序设计。由于这些内容涉及许多具体规定,学起来比较枯燥,建议大家在学习本章节时,可以先大致浏览一下,知道有关的主要内容即可,有些细节不必探究,更不要死记硬背。最好在之后我发布习题时,把习题做一遍,这样就可以初步掌握。在学习后面各章以及进行程序设计过程中,在遇到有关这方面的问题时,在回头仔细查阅本章的内容,可能会有较深的理解。
2.1 C++的数据类型
计算机处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、浮点数、字符等形式)。数据结构指的是数据的组织形式。例如,数组就是一种数据结构。
C++可以使用的数据类型如下:
布尔型就是逻辑型,空类型就是无值型。各种类型的含义和应用将在随后陆续介绍。
C++的数据包括常量与变量,常量与变量都具有数据类型。由以上这些数据类型还可以构成更复杂的数据结构。例如,利用指针和结构体类型可以构成表、树、栈等复杂的数据结构。
C++并没有统一规定各类数据的精度、数值范围和在内存中所占的字节数,各种C++编译系统根据自己的情况作出安排。表2.1列出了Visual C++数值型和字符型数据的情况。
类型 | 类型标识符 | 字节数 | 范围数值 |
整型 | [signed] int | 4 | -2147483648~+2147483647 |
无符号整型 | unsigned [ int ] | 4 | 0~4294967295 |
短整型 | short [ int ] | 2 | -32768~+32767 |
无符号短整型 | unsigned short [ int ] | 2 | 0~65535 |
长整型 | long [ int ] | 4 | -2147483648~+2147483647 |
无符号长整型 | unsigned long [ int ] | 4 | 0~4294967295 |
字符型 | [ signed ] char | 1 | -128~+127 |
无符号字符型 | unsigned char | 1 | 0~255 |
单精度型 | float | 4 | 3.4*10^-38~3.4*10^38 |
双精度型 | double | 8 | 1.7*10^-308~1.7*10^308 |
长双精度型 | long double | 8 | 1.7*10^-308~1.7*10^308 |
说明:
(1)整型数据分为长整型(long int)、一般整型(int)和短整型(short int)。在int前面加long和short分别表示长整型和短整型。C++没有规定每一种数据所占的字节数,只规定int型数据所占的字节不大于long型,不小于short型。一般在16位机的C++系统中,短整型(short)和整型(int)占两个字节,长整型(long)占4个字节。在Visual C++中,短整型占两个字节,整型和长整型占4个字节。
(2)整型数据的存储方式为按二进制形式存储,例如十进制整数85的二进制形式为1010101,则在内存中的存储形式如图2.1所示(整型数据占4个字节)
图2.1
(3)在整型符号int和字符型符号char的前面,可以加修饰符signed(表示“有符号”)或unsigned(表示“无符号”)。如果指定为signed,则数值以补码形式存放,存储单元中的最高位(bit)用来表示数值本身。例如,短整型数据占两个字节,见图2.2
图2.2
(4)浮点型(又称实型)数据分为单精度(float)、双精度(double)和长双精度(long double)3种,在Visual C++中,对float提供6位有效数字,对double提供15位有效数字,并且float和double的数据范围不同。对float分配4位字节,对double和long double分配8个字节。因此在Visual C++中,实际用不到long double类型,在GCC中则对long double分配12个字节,但对初学者来说,用long double类型的机会比较少。
(5)表中的类型标识符一栏中,方括号[ ]包含的部分可以省写,如short 和 short int等效,unsigned int和unsigned等
King