C++数据类型(整型、浮点型、字符型、字符串型、布尔型)


C++创建变量或常量时,必须指定数据类型,否则无法为变量分配内存。

数据类型的意义:为变量分配合适的内存空间,避免浪费内存资源。


1 整型

作用:整型变量表示整数类型的数据。

C++中共有4种表示整型的类型,区别在于所占内存空间可表示的取值范围不同。

注:实际开发中,较多使用int类型表示整型数据,占用空间大小为4字节

数据类型 占用空间 取值范围
short(短整型) 2字节 (-2^15 ~ 2^15-1)
int(整型) 4字节 (-2^31 ~ 2^31-1)
long(长整形) Windows为4字节,Linux为4字节(32位),8字节(64位) (-2^31 ~ 2^31-1)
long long(长长整形) 8字节 (-2^63 ~ 2^63-1)

注:不同整型占用的内存空间比较:short < int <= long <= long long


2 sizeof关键字

作用:sizeof关键字可统计数据类型所占用的内存大小

语法sizeof(数据类型)sizeof(变量名)

示例

int main() {
    
    
	cout << "short 类型占用的内存大小:" << sizeof(short) << endl;

	int num = 10;
	cout << "int 类型占用的内存大小:" << sizeof(int) << endl;
	cout << "int 类型占用的内存大小:" << sizeof(num) << endl;

	cout << "long 类型占用的内存大小:" << sizeof(long) << endl;
	cout << "long long 类型占用的内存大小:" << sizeof(long long) << endl;

	system("pause");
	return 0;
}

3 浮点型(实型)

作用:浮点型变量表示小数类型的数据。

浮点型变量分为两种,区别在于表示的有效数字范围不同
(1)单精度float:4字节
(2)双精度double:8字节

数据类型 占用空间 有效数字范围
float 4字节 7位有效数字
double 8字节 15~16位有效数字

注1:有效数字包括整数部分和小数部分。
注2:C++输出多位小数时默认会显示6位有效数字,需进行额外配置以完整显示全部有效数字。
注3:float类型表示小数时,在数字末尾显式地使用字母f表示单精度,否则编译器会默认将小数视为双精度浮点型(double),再进行类型转换(由double型转换为float型)。

示例:

int main() {
    
    
	float f1 = 3.1415926535f;
	cout << "float 类型占用的内存大小:" << sizeof(float) << endl;
	cout << "float 类型占用的内存大小:" << sizeof(f1) << endl;

	double d1 = 3.1415926535;
	cout << "double 类型占用的内存大小:" << sizeof(double) << endl;
	cout << "double 类型占用的内存大小:" << sizeof(d1) << endl;

	//科学计数法表示整数
	float f2 = 3e2; // 3 * 10 ^ 2 
	cout << "f2 = " << f2 << endl;

	//科学计数法表示小数
	float f3 = 3e-2;  // 3 * 0.1 ^ 2
	cout << "f3 = " << f3 << endl;
	return 0;
}

4 字符型

C和C++语言中,字符型变量只占用1个字节
字符型变量是将对应的ASCII编码存放至内存,而不是字符本身。

作用:字符型变量可表示单个字符
语法:char ch = 'a';

注1:使用单引号表示字符,且单引号内有且仅有1个字符,不可以是字符串。
注2:使用 (int) ch 查询字符对应的ASCII编码。'a’对应97,'A’对应65

示例

int main() {
    
    
	//字符型变量创建方式
	char ch = 'a';
	cout << ch << endl;

	//字符型变量所占内存大小
	cout << "char字符型变量占用的内存大小:" << sizeof(char) << endl;
	cout << "char字符型变量占用的内存大小:" << sizeof(ch) << endl;

	//字符型变量常见错误
	//char ch2 = "b";		//错误:表示字符时需使用单引号
	//char ch2 = 'abcdef';	//错误:单引号内只能有一个字符

	//字符型变量对应ASCII编码(a:97; A:65)
	cout << (int)ch << endl;
	return 0;
}

ASCII码表格:

ASCII 控制字符 ASCII 字符 ASCII 字符 ASCII 字符
0 NUT 32 (space) 64 @ 96
1 SOH 33 ! 65 A 97 a
2 STX 34 " 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 , 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 - 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DCI 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 TB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 ESC 59 ; 91 [ 123 {
28 FS 60 < 92 / 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 `
31 US 63 ? 95 _ 127 DEL

ASCII 码的大致组成部分
(1)非打印控制字符:ASCII 表的 数字0-31 分配给控制字符,用于控制如打印机等外围设备。
(2)打印字符:ASCII 表的 数字32-126 分配给键盘上的字符。


5 转义字符

作用:表示一些特殊的无法直接显示的ASCII字符
常用的转义字符有:\n \\ \t

注1:C语言中使用转义字符\n换行,C++中使用endl换行。
注2:表示水平制表符的转义符\t占据8个字符宽度。

转义字符 含义 ASCII码值(十进制)
\a 警报 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
\\ 代表一个反斜线字符“\” 092
代表一个单引号(撇号)字符 039
" 代表一个双引号字符 034
? 代表一个问号 063
\0 数字0 000
\ddd 8进制转义字符,d范围0~7 3位8进制
\xhh 16进制转义字符,h范围0-9,a-f,A~F 3位16进制

示例

int main() {
    
    
	cout << "\\" << endl;
	cout << "\tHello" << endl;
	cout << "\n" << endl;

	return 0;
}

6 字符串型

作用:表示一串字符

(1)C风格字符串char 变量名[] = "字符串值";
(2)C++风格字符串string 变量名 = "字符串值";

示例

#include <iostream>
#include <string>
using namespace std;

int main() {
    
    
	//C风格字符串
	char cStr[] = "hello c str";
	cout << cStr << endl;

	//C++风格字符串
	string cppStr = "hello cpp str";
	cout << cppStr << endl;
	return 0;
}

注1:使用C风格字符串时,需使用双引号将字符串值括起来。
注2:使用C++风格字符串时,需包含头文件#include <string>


7 布尔类型 bool

作用:布尔数据类型表示真或假的值。
bool类型占1个字节大小,且只有两个值:
(1)true: 真(本质是1)
(2)false:假(本质是0)

注:C++的bool类型中,true任意非0值 均代表“真”; false0值 代表“假”。

示例

int main() {
    
    
	bool flag = true;
	cout << flag << endl;	// 1(真)

	/* C++的bool类型中,true 或 任意非0值 均代表“真” */
	flag = 6.66f;
	cout << flag << endl;	// 1(真)

	flag = false;
	cout << flag << endl;	// 0(假)

	/* C++的bool类型中,false 或 0值 代表“假” */
	flag = 0;
	cout << flag << endl;	// 0(假)

	cout << "bool类型占用的内存大小:" << sizeof(bool) << endl;
	cout << "bool类型占用的内存大小:" << sizeof(flag) << endl;

	return 0;
}

8 C++数据类型小结

数据类型 占用空间 取值范围
short(短整型) 2字节 (-2^15 ~ 2^15-1)
int(整型) 4字节 (-2^31 ~ 2^31-1)
long(长整形) Windows为 4字节 ;Linux为 4字节(32位) 或 8字节(64位) (-2^31 ~ 2^31-1)
long long(长长整形) 8字节 (-2^63 ~ 2^63-1)
float 4字节 7位有效数字
double 8字节 15~16位有效数字
char 1字节 ASCII码范围(0~127)
bool 1字节 0或1

9 数据的输入

作用:从键盘获取数据,并赋值给cin对应的变量
关键字:cin
语法cin >> 变量

示例

#include <iostream>
#include <string>
using namespace std;

int main() {
    
    
	//字符串型输入
	string str = "hello world";
	cout << "请输入字符串型变量:" << endl;
	cin >> str;				//输入:hello cpp
	cout << str << endl;	//输出:hello cpp

	//布尔类型输入
	bool flag = false;
	cout << "请输入布尔型变量:" << endl;
	cin >> flag;			//输入:3.1415926f
	cout << flag << endl;	//输出:1

	return EXIT_SUCCESS;
}

猜你喜欢

转载自blog.csdn.net/newson92/article/details/109675603