1. C++数据类型
使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。也就是说当创建一个变量的时候,就会在内存中保留一些空间。
C++中在定义变量或者是常量的时候必须指定其数据类型,否则是无法给变量分配内存的。数据类型存在的意义: 给变量分配合适的内存空间。
C++中常用的几种数据类型如下表所示:
数据类型 | 关键字 |
---|---|
整型 | int |
浮点型 | float |
双浮点型 | double |
字符型 | char |
字符串型 | string |
布尔型 | bool |
无类型 | void |
1.1 整型
C++基本整型有:
类型 | 所占字节数 | 表示范围 |
---|---|---|
short(短整型) | 2 | -2^15 ~ 2^15-1 |
int(整型) | 4 | -2^31 ~ 2^31-1 |
long(长整型) | 4(windows下)、4或8(Linux下,32位系统为4,64位系统为8) | -2^31 ~ 2^31-1 or -2^63 ~ 2^63-1 |
long long(长长整型) | 8 | -2^63 ~ 2^63-1 |
- 代码演示
#include <iostream>
using namespace std;
int main() {
//1、short(短整型) 范围:-2^15-2^15-1[2字节]
short a = 10;
cout << a << endl;
cout << "short类型占用的内存空间为:" << sizeof(short) << endl;
//2、int(整型) 范围:-2^31-2^31-1[4字节]
int b = 20;
cout << b << endl;
cout << "int类型占用的内存空间为:" << sizeof(int) << endl;
//3、long(长整型) 范围:-2^31-2^31-1[window下4字节;Linux下4字节(32位),8字节(64位]
long c = 30;
cout << c << endl;
cout << "long类型占用的内存空间为:" << sizeof(long) << endl;
//4、long long(长长整型) 范围:-2^63-2^63-1[8字节]
long d = 40;
cout << d << endl;
cout << "long long类型占用的内存空间为:" << sizeof(long long) << endl;
system("pause");
return 0;
}
输出结果如下:
1.2 浮点型
作用:用于表示小数
C++浮点型有:
类型 | 所占字节数 | 表示范围 | 十进制有效位数 |
---|---|---|---|
float(单精度类型) | 4 | -2^31 ~ 2^31-1 | 7 |
double(双精度类型) | 8 | -2^63 ~ 2^63-1 | 15 |
注意: float和double浮点型数据的区别在于表示的有效数字范围不同。
- 代码演示
#include <iostream>
using namespace std;
int main() {
//默认情况下,输出一个小数,会显示6位有效数字。
//1、float(一般在初始值后面加一个f,这样得到的数就是float类型的;
// 若不加f,得到的数编辑器默认为double类型,此时需要将数据类型进行一个转换)
float num1 = 3.1415926f;
cout << "num1 = " << num1 << endl;
cout << "float 类型占用的内存空间为: " << sizeof(float) << endl;
//2、double
double num2 = 3.1415926;
cout << "num2 = " << num2 << endl;
cout << "double 类型占用的内存空间为: " << sizeof(double) << endl;
//科学计数法
float f1 = 3e2; //3e2 = 3 * 10^2
cout << "f1 = " << f1 << endl;
float f2 = 3e-2; //3e-2 = 3 * 10^-2
cout << "f2 = " << f2 << endl;
system("pause");
return 0;
}
输出结果:
1.3 字符型
字符型变量用于显示单个字符,C/C++中字符型变量只占用一个字节,字符型变量并不是把字符本身放到内存中存储,而是把对应的ASCII编码放到内存当中存储。
定义字符型变量时需注意:
- 定义字符型变量只能用单引号,不能用双引号
- 定义字符型变量时,单引号内只能有一个字符,多与一个字符就会出现警告或者是错误
常见字符及对应的ASCII编码:
字符 | 十进制 | 二进制 | 十六进制 |
---|---|---|---|
A | 65 | 0100 0000 | 40 |
B | 66 | 0100 0001 | 41 |
C | 67 | 0100 0010 | 42 |
… | … | … | … |
X | 88 | 0101 1000 | 58 |
Y | 89 | 0101 1001 | 59 |
Z | 90 | 0101 1010 | 5A |
… | … | … | … |
a | 97 | 0110 0001 | 61 |
b | 98 | 0110 0010 | 62 |
c | 99 | 0110 0011 | 63 |
… | … | … | … |
x | 120 | 0111 1000 | 78 |
y | 121 | 0111 1001 | 79 |
z | 122 | 0111 1010 | 7A |
注意: 对于常见字符对应的ASCII编码,都是有一定的规律的,只需要知道部分字符的编码即可推测其它字符所对应的编码。
- 代码演示
#include <iostream>
using namespace std;
int main() {
char ch = 'A';
cout << "ch字符为:" << ch << endl;
cout << "char类型占用内存: " << sizeof(ch) << " 字节" << endl;
//char ch = "a"; //报错,1、在显示字符型变量时,用单引号将字符括起来,不能用双引号
//char ch = 'abcde'; //报错,2、单引号内出现4个以上字符时将会报错,超过了int类型的内存4字节
//char ch = 'abcd'; //警告,3、输出最后一个字节(一个字符)
//将字符转换为对应的ASCII编码(a--97;A--65)
cout << (int)ch << endl;
//可以直接用ASCII编码给字符型变量赋值
ch = 97;
cout << ch << endl;
system("pause");
return 0;
}
输出结果为:
1.4 字符串型
字符串数据类型用来表示一串字符。
字符串的定义方式有:
- C语言风格字符串
语法:char 变量名[ ] = “字符串值”- C++引入的string类类型
语法:string 变量名 = “字符串值”
在使用这种方式定义字符串变量时需要包含一个如下所示的头文件#include <string>
- 代码演示
#include <iostream>
using namespace std;
#include <string> //使用C++风格的字符串时需要包含此头文件
//用于表示一串字符
int main() {
//1、C语言风格字符串:char 变量名[] = "字符串值"
char str1[] = "hello world!";
cout << str1 << endl;
//2、C++风格字符串:string 变量名 = "字符串值"
string str2 = "hello world!!!";
cout << str2 << endl;
system("pause");
return 0;
}
输出结果:
1.5 布尔型
布尔数据类型代表真或假的值,占用一个字节长度。
布尔类型的变量值为非零时,返回的就是1;相反,只有当布尔类型的变量值为0时,返回的才是0。
布尔变量可以用来表示逻辑运算、关系运算以及开关变量的值。
- 代码演示
#include <iostream>
using namespace std;
int main() {
bool flag = true;
bool flg = 3;
cout << flag << "\t" << flg << endl;
bool flag1 = false;
bool flg1 = 0;
cout << flag1 << "\t" << flg1 << endl;
cout << "bool类型占用的内存空间为: " << sizeof(bool) << endl;
system("pause");
return 0;
}
输出结果:
2. 转义字符
C++中常用转移字符如下:
字符形式 | 含义 |
---|---|
\a | 响铃 |
\n | 换行 |
\t | 水平制表符(跳到下一个Tab位置) |
\b | 退格,将当前位置移到前一列 |
\r | 回车,将当前位置移到本行开头 |
\ | 反斜杠字符“\” |
’ | 单撇号 |
" | 双引号 |
\0 | 空字符 |
- 代码演示
#include <iostream>
using namespace std;
int main() {
//转义字符:\n换行符
cout << "helloworld!\n" << endl;
//转义字符:\\反斜杠
cout << "helloworld!\\" << endl;
//转义字符:\t水平制表符。可以让输出的数据规整对齐
cout << "111\thelloworld!" << endl;
cout << "11111\thelloworld!" << endl;
cout << "1111111\thelloworld!" << endl;
system("pause");
return 0;
}
输出结果:
3. sizeof关键字
作用:利用sizeof关键字可以求某一特定的变量、指针、结构体、枚举、联合体等所占内存空间的大小。
- 代码演示
#include <iostream>
using namespace std;
#include <string>
//语法:sizeof(数据类型/变量)
//short(2字节) <= int(4字节) <= long(4字节or8字节) <= long long(8字节)
//float(4字节) < double(8字节)
//char(1字节) = bool(1字节) < string(4字节)
int main() {
//1、short(短整型)
short num1 = 10;
cout << "short 类型所占的内存空间为: " << sizeof(num1) << endl;
//2、int(整型)
int num2 = 20;
cout << "int 类型所占的内存空间为: " << sizeof(num2) << endl;
//3、long(长整型)
long num3 = 30;
cout << "long 类型所占的内存空间为: " << sizeof(num3) << endl;
//4、long long(长长整型)
long long num4 = 40;
cout << "long long 类型所占的内存空间为: " << sizeof(num4) << endl;
//5、float(单精度浮点型)
float num5 = 3.14159f;
cout << "float 类型所占的内存空间为: " << sizeof(num5) << endl;
//6、double(双精度浮点型)
double num6 = 3.1415926;
cout << "double 类型所占的内存空间为: " << sizeof(num6) << endl;
//7、char(字符型)
char ch = 'a';
cout << "char 类型所占的内存空间为: " << sizeof(ch) << endl;
//8、string(字符串类类型)
string str = "abcde";
cout << "string 类型所占的内存空间为: " << sizeof(str) << endl;
//9、bool(布尔类型)
bool FLAG = true;
cout << "bool 类型所占的内存空间为: " << sizeof(FLAG) << endl;
system("pause");
return 0;
}
输出结果:
注意:
字符串string:
string在C++中属于类类型,不是基本数据类型,类不能计算其在内存中的大小,非要用>sizeof(string)计算的话,一般算出来的结果为sizeof(string) = 4byte,若字符串中内容较多时,算出来的内存就不>是其真实大小。
4. 数据输入
C++中cin关键字用于从键盘来获取数据。其使用方式为:cin >> 变量名
- 代码演示
#include <iostream>
using namespace std;
#include <string>
int main() {
int a = 10;
cout << "请输入整型变量: " << endl;
cin >> a;
cout << "a = " << a << endl;
double d = 10.1;
cout << "请输入实型变量: " << endl;
cin >> d;
cout << "d = " << d << endl;
char ch = 'a';
cout << "请输入字符型变量: " << endl;
cin >> ch;
cout << "ch = " << ch << endl;
string str = "hello";
cout << "请输入字符串型变量: " << endl;
cin >> str;
cout << "str = " << str << endl;
bool b = 0;
cout << "请输入bool型变量: " << endl;
cin >> b;
cout << "b = " << b << endl;
system("pause");
return 0;
}
输出结果: