C++数据类型
数据 | 分类 | 关键字 |
整型 | 短整形 | short |
整形 | int | |
长整形 | long long | |
浮点型 | 单精度 | float |
双精度 | double | |
字符型 |
| char |
布尔型 | bool |
1.整型
1.1 短整型
short,短整型,占用2个字节,取值范围是-2^15 ~ 2^15-1, 数值大小是 -32768~32767
1.2 基本整型
int,基本整型,占用4个字节,取值范围是-2^31 ~ 2^31-1, 数值大小是 -2147483648 ~ 2147483647
1.3 长整型
long long,长整型,占用8个字节,取值范围是-2^63 ~ 2^63-1, 数值大小是 -9223372036854775808 ~ 9223372036854775807 (19位数)
2.浮点型
2.1 如果你是初学者记住下面这句话
浮点型统一使用double
2.2 如果想要深入研究看下面
2.2.1范围
类型 | 占字节 | 一共位数 | 符号位 | 指数位 | 尾数位 |
float | 4 | 32 | 1 | 8 | 23 |
double | 8 | 64 | 1 | 11 | 52 |
float和double的范围是由指数的位数来决定的。
float的指数位有8位,float的指数范围为-128 ~ 127
float的范围为-2^128 ~ 2^127,也即-3.40E+38 ~ +3.40E+38
double的指数位有11位,double的指数范围为-1024 ~ 1023
double的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308
2.2.2精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位
2.2.3计算方法
符号S | 指数位E | 尾数位F |
S = 1 or -1
浮点型的值 = S F 2^E
3.字符型 char
char,字符型,占1个字节,可以存储单个字符,如'a','!','1'(必须用单引号括起来)。char类型中存放字符的是ASCII码,因此字符型变量可以转化尾整数,取值范围是-128~127。
4.布尔型 bool
bool,布尔型,用于表示真、假逻辑值,占用1个字节。可以用整数对bool类型变量赋值,赋0值即为false,非0值即为true。
5.不同数据类型转换
5.1 隐式转换(默认情况下的计算规则)
小类型和大类型做计算,结果为大类型。
#include<iostream>
using namespace std;
int main(){
// int 和 int 结果为 int
cout << 10/3 << endl; //输出 3
// int 和 double 结果为 double
cout << 10/3.0 << endl; // 输出 3.33333
// char 和 int 结果为 int
cout << 'a'+1 << endl; // 输出 98
// char 和 double 结果为 double
cout << 'a'+1.1 << endl; // 输出 98.1
return 0;
}
5.2 强制转换
通过代码要求结果变为某种类型
#include<iostream>
using namespace std;
int main(){
double a=3.5,b=3.6;
cout << int(a+b) << endl;// 输出 7
cout << (int)a+b << endl;// 输出 6.6
int c = 97;
cout << char(c) << endl;// 输出 a
return 0;
}