C++语言程序设计教程|C++数据类型
C++数据类型
数据是程序处理的对象,C++提供了多种数据类型。1
1. C++字符集
字符集是构成C++程序语句的最小元素。字符集由下列各类字符构成:
- 英文字母 A~Z, a~z
- 数字 0-9
- 特殊字符:
可见,C++字符集包含除@之外的所有键盘能输入的字符。这些字符可以组合起来作标识符、数据,也可以单独使用,如+、-、*、/分别表示加减乘除运算。
2. C++基本数据类型
C++的基本数据类型分为五大类,即布尔型、整数型、实数型、空值型,分别用关键字bool、char、int、float、void表示,如下表所示。其中布尔型也称为逻辑型。有的类型还可以通过加上修饰符进一步细分,如signed、unsigned分别表示有无符号,short、long等。
*表中符号[ ]表示可选,表示其中的内容可以缺省,也有默认的意思。如[signed] char表示char类型默认为signed char;使用类型名定义一个变量时,[]中的内容可以省略。
3. 数值
数值就是指直接参加运算的数。在有的教科书上称为文字常量(literal constant)或常量。文字是程序中直接用符号表示的数值,常量是指在程序运行过程中,其值不能被改变的量。出现在程序中的数值在程序运行过程中是不能被改变的,故称之为文字常量。通俗说,文字常量就是数值。
3.1 整型数
3.1.1 各种进制的整数表示
- 十进制整数
十进制是整型数据的默认表示形式,不需要加任何前缀。我们熟悉的数学中的数据就是用十进制表示的。
十进制使用的数字有0、1、2、3、4、5、6、7、8、9。如:123、456、1、-123都是十进制整数。 - 八进制整数
以数字0作为前缀, 数字为0、1、2、3、4、5、6、7。如:0123表示八进制数123即(123)8。其值为: 1 × 8 2 + 2 × 8 1 + 3 × 8 0 1×8^2+2×8^1+3×8^0 1×82+2×81+3×80,等于十进制数83。-017表示八进制数(-17)8,即十进制数-15。 - 十六进制整数
以 0 x 0x 0x或 0 X 0X 0X开头, 数字有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中英文字母A~F代表的值为10~15。
如: 0 x 12 B 0x12B 0x12B表示十六进制数(12B)16,其值为: 1 × 1 6 2 + 2 × 1 6 1 + 11 × 1 6 0 1×16^2+2×16^1+11×16^0 1×162+2×161+11×160,等于十进制数299。 − 0 x 17 -0x17 −0x17等于十进制数-23。
十六进制使用的英文字母除了使用大写字母外还可以使用a、b、c、d、e、f小写字母,并且大小写可以混用。
注意:
各进制数只能使用其规定的数字, N进制使用的数字为0~N-1。如0128是不合法的八进制数,因为8不是八进制所使用的数字。
八进制整数前不能省略0,省略了0就是十进制数。
3.1.2 各种类型整数的表示
-
基本整型数
基本整型数不需要在数字后加任何后缀。在16位系统下,整型数的长度为16bit(2字节) 如:12、-1235等是用十进制表示的整型数。如0xc、0xfb2d是用十六进制表示的整型数,其值分别为12、-1235。
在32位系统下,长度为32bit(4字节),如:12、-1235等。12、-1235用十六进制表示分别为0xc、0xfffffb2d。 -
长整型数
长整型的长度与取值范围与32位系统下的基本整型一样。表示方法则是在数字后加l或L做标记。如:345667L、-123L、12l。 -
无符号整型数
无符号整型数据的长度与基本整型常量一样。但取值范围不同,16位系统下,范围为0~65535;32位系统下范围为0~4294967295。表示方法是在数字后加u或U做标记。如:235u、12U。其中12u和12的区别是12u为无符号整数,12为有符号整数。 -
无符号长整型数据
无符号长整型的长度与取值范围与32位系统下的基本整型一样。表示方法是在数字后同时跟有l(或L)和u(或U)。如:235Lu、12lU。
当同时跟有L和U,表示无符号长整型的常量时,先后顺序任意。如17896UL可表示成17896LU。
注意:
为了区别表示长整型数字母l与数字1,一般使用大写L;
在定义一个整型数时,不管采用哪种进制形式,都不要超过其表示范围。
3.2 浮点型数
浮点型数即我们平常使用的实型数,由整数部分和小数部分组成。通常有两种表示形式:
- 十进制数形式
由0~9和小数点组成。如:23.456、-12.3等。 - 指数形式
表示格式为:
十进制浮点型数|基本整型数1 E 基本整型数2
注意:
当以指数形式表示一个实数时,整数部分和小数部分可以省略其一,但不能都省略。如.123E5、123.E-6都是正确的,但不能写成E-2这种形式。
浮点数默认为双精度浮点型,在内存中占8个字节,取值范围为±1.7e±308。如果带有后缀F或f, 则为float类型,在内存中占4个字节,取值范围为±3.4e±38。
3.3 字符型数
字符数是用英文单引号括起来的一个字符。如:‘a’,'A’等。
有些ASCII码字符如回车、退格等不能直接用在用单引号中。这些数据可用转义序列来表示 :
- 转义符形式1:
\字符助记符
- 转义符形式2:
\字符的ASCII码值
字符助记符只有一个字母,例如n、t分别为newline(换行符)、table(制表符)的助记符。故\n、\t分别表示换行符与制表符。
字符的ASCII码值的形式为\ooo与\xhh, 其中\ooo表示3位八进制数,\xhh表示2位十六进制数。例如, 制表符table用第2种形式的转义序列表示为\011或\x09。\ooo中,ooo为不超过3位的八进制数字,可以不以0开头。
常用预定义的转义序列:
3.4 字符串
字符串数值简称字符串,是使用一对双引号括起来的字符序列。例如,
英文串: “This is a string\n”
中文串: “我们都是中国人\t我们热爱自己的祖国\n”
字符串与字符比较的区别:
- 字符由单引号括起来,字符串由双引号括起来。如:'a’与"a"分别表示a字符与a这个字符串。
- 字符只能是单个字符,字符串则可是零个或多个字符。如:'abd’是不合法的。但""是合法的,表示空串。
- 字符占一个字节的内存空间,字符串占内存字节数等于字符串的长度加1。系统自动在字符串末尾添加’\0’作为结束标记。如:'a’在内存中占用一个字节;而"a" 在内存中占用两个字节,分别存放a和\0。
3.5 布尔型数
布尔型数值只有两个:true(真)和false(假)。
在C++的算术运算式中,把布尔型数据当作整型数据,true与false分别当作1与0。在逻辑运算式中则把非0数据当成true, 把0当成false。
注意:
不能将true与false写成TRUE与FALSE。
4 示例代码
以下代码展示了转义序列的用法。
/**************************************************
* 程序名: p2_1.cpp *
* 功 能: 转义序列的用法 *
**************************************************/
#include <iostream>
using namespace std;
int main()
{
cout<<'A'<<'\t'<<';'<<'\n';
cout<<'\102'<<'\011'<<'\073'<<'\012';
cout<<'\103'<<'\11' <<'\73' <<'\12';
cout<<'\x44'<<'\x09'<<'\x3b'<<'\x0a';
cout<<'\x45'<<'\x9' <<'\x3b'<<'\xa';
cout<<"\x46\x09\x3b\x0d\x0a";
cout<<"\xcd\xcd\xcd\xcd\xcd"<<endl;
system("pause");
return 0;
}
本教程仅供教学使用,参考教材 :《C++语言程序设计教程》,杨进才、沈显君编著,清华大学出版社,2022年1月第4版 ↩︎