1 概述
在创建变量和常量的时候,都需要指定其数据类型,以便为其分配合适的内存空间。
其中宏常量不需要指定类型,是因为宏定义是字符替换。
2 整型
整型表示的是整数,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) |
这是在常用的环境中,但是需要知道的是,各个数据类型的长度取决于编译器和操作系统的具体实现。不同的cpu架构和abi版本其实现会有所不同。
3 sizeof关键字
sizeof关键字能够统计不同数据类型所占用的内存大小
cpp
#include <iostream>
using namespace std;
int main() {
short a = 10;
cout << "short类型占用空间为:" << sizeof(a) << endl;
cout << "int类型占用空间为:" << sizeof(int) << endl;
cout << "long类型占用空间为:" << sizeof(long) << endl;
cout << "long类型占用空间为:" << sizeof(long long) << endl;
}
输出
cpp
short类型占用空间为:2
int类型占用空间为:4
long类型占用空间为:4
long类型占用空间为:8
windows10,64位主机上输出如上。
4 浮点型
浮点型用于表示带小数的数值。可分为单精度float和双精度double,两者表示的有效数字范围不同。
数据类型 | 占用空间 | 有效数字范围 |
---|---|---|
float | 4字节 | 7位有效数字 |
double | 8字节 | 15~16位有效数字 |
cpp
#include <iostream>
using namespace std;
int main() {
float f = 3.14159265358;
double d = 3.14159265358;
cout << "sizeof(float) = " << sizeof(f) << endl;
cout << "sizeof(float) = " << sizeof(d) << endl;
return 0;
}
输出
cpp
sizeof(float) = 4
sizeof(float) = 8
5 字符型
字符型用于显示单个字符
cpp
#include <iostream>
using namespace std;
int main() {
char c = 'a';
cout << "sizeof(char) = " << sizeof(c) << endl;
return 0;
}
输出
cpp
sizeof(char) = 1
除此之外,还可以将ASCII码表中的数值直接赋值给char类型
cpp
#include <iostream>
using namespace std;
int main() {
char c = 97;
cout << c << endl;
return 0;
}
输出
cpp
sizeof(char) = 1
a
6 转义字符
表示一些不能显示的ASCII字符
转义字符 | 含义 | 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进制 |
7 字符串类型
C++中支持两种类型的字符串
一种是沿用C的字符串类型,使用char数组进行保存,两一种是C++风格的字符串,使用string
cpp
#include <iostream>
using namespace std;
int main() {
char ch1[] = "test1";
cout << ch1 << endl;
string ch2 = "test2";
cout << ch2 << endl;
return 0;
}
输出
cpp
test1
test2
8 布尔类型
表示真或者假
cpp
#include <iostream>
using namespace std;
int main() {
bool b1 = true;
cout << "sizeof(bool) = " << sizeof(b1) << endl;
bool b2 = 1;
bool b3 = 0;
bool b4 = 0.3;
cout << "b2 = " << b2 << endl;
cout << "b3 = " << b3 << endl;
cout << "b4 = " << b4 << endl;
return 0;
}
输出
cpp
sizeof(bool) = 1
b2 = 1
b3 = 0
b4 = 1
bool类型的cout输出为整数,这里会将true输出为1,false输出为0。同样的,数值类型可以转换成bool类型,0转换成false,非0转换成true。