基本数据类型和计算
一、常量和变量
| 常量和变量 | ||||
| 常量 | 值不会改变 | |||
| 变量 | 值可能改变 | |||
| 起名字必须遵守的规矩 | |
| 1 | 不能重名 |
| 2 | 不能和C/C++语言里的关键字重名 |
| 3 | 必须是字母或者字母和数字的组合,符号仅_可以使用 |
| 4 | 名字不能用数字开头 |
| 起名字建议遵守规矩 | |
| 最好要能直观表达你这个名字代表的内容 | |
| 别太长 | |
| 变量的定义方式 |
| 类型 名字 {初始值}; 或者 类型 名字=初始值; |
| 常量的定义方式 |
| 直接使用值 |
| const 类型 名字 {初始值};类型 const名字{初始值}; |
| #defin 名字 值 |
二. 布尔和整型
| 带符号的整数类型表 | |||
| 类型 | 内存占用(字节) | 取值范围 | |
|
signed char char |
1 | -128到127 | |
|
short short int signed short signed short int |
2 | -32768到32767 | |
|
int signed signed int |
4 | -2'147'483'648到2'147'483'647 | |
|
long long int signed long signed long int |
4/8 |
4字节-2'147'483'648到2'147'483'647 8字节-9'223'372'036'854'775'808到9'223'372'036'854'775'807 |
|
|
long long long long int signed long long signed long long int |
8 | -9'223'372'036'854'775'808到9'223'372'854'775'807 | |
| 不带符号的整数类型 | ||
| 类型 | 内存占用(字节) | 取值范围 |
| unsigned char | 1 | 0到255 |
|
unsigned short wchar_t |
2 | 0到65535 |
|
unsigned unsigned int |
4 | 0到4’249‘967’295 |
| unsigned long | 4/8 |
4字节 0到4‘294’967‘295 8字节 0到18'446'744'073'709'551'615 |
| unsiged long long | 8 | 0到18’446‘744’073‘709’551‘615 |
| 布尔类型 | ||
| 类型 | 内存占用(字节) | 取值范围 |
| bool | 1 | true或者false |
注意:0~255中除了0其他都是True
|
变量的定义方式 |
|
类型 名字 {初始值}; 类型 名字 =初始值; |
| 分解变量的定义方式 |
|
定义 初始化 定义 类型 名字 初始化 名字{}; 名字{初始值}; 名字(初始值); 名字=初始值; |
| 输入和输出 | |
| 操作 | 代码 |
| 输出 | std::cout<<"输出的内容"; |
| 输入 | std::cin要存放内容的变量; |
三、 赋值和运算
| 整型字面量的表达 | |
| 进制 | 表达方式 |
| 二进制 | 0b+二进制+后缀; |
| 八进制 | 0+八进制数+后缀; |
| 十进制 | 十进制数+后缀; |
| 十六进制 | 0x+十六进制数+后缀 |
|
关于后缀的说明: L/I代表该值为long型 LL/II代表该值为long long型 U/u代表该值为无符号型,可以和L/II或者LL/II使用 比如65535ULL; |
|
| 基本的算数运算 | ||
| 名称 | 运算符 | 示范 |
| 加 | + | a=b+c; a=a*c; |
| 减 | - | a=b-c; a=a-c; |
| 乘 | * | a=b*c; a=a*c; |
| 除 | / | a=b/c; a=a/c; |
| 模 | % | a=b%c; a=a%c; |
| op=运算符 | ||
| 名称 | 运算符 | 示范 |
| 加 | += | a+=1; 相当于a+=a+1; |
| 减 | -= | a-=1; 相当于a=a-1; |
| 乘 | *= | a*=1; 相当于a=a*1; |
| 除 | /= | a/=1; 相当于a=a/1; |
| 模 | %= | a%=1; 相当于a=a%1 |
| 递增递减运算符 | ||
| 名称 | 运算符 | 示范说明 |
| 先递增 | ++a; | int a=10; int s_end=++a+5; //s_end=16; a=11; |
| 后递增 | a++; | int a=10; int s_end=a++ +5; //s_end=15; a=11; |
| 先递减 | --a; | int a=10; int s_end=--a+5; //s_end=14; a=9; |
| 后递减 | a--; | int a=10; int s_end=a-- +5; //s_end=15; a=9; |
|
一次运算最多使用一次递增或者递减 比如 int s_end = ++a*5+16*a++; 结果是不确定的 s_end=s_end++ +1;(C++17标准后可以写,但是不推荐) |
||
四、浮点数
| 浮点数数据类型 | ||
| 类型 | 内存占用(字节) | 取值范围 |
| float | 4 | 大约7位精度±3.4E±38 |
| double | 8 | 大约15位精度±1.7E±308 |
| long double | 8 | 大约15位精度±1.7E±308 |
| 浮点数的表达 |
|
单精度浮点数(float)小数后加f或者F 例如200.0f/200.0F |
|
不带后缀的浮点数一律视为double类型 例如200.0 |
| 后缀位L/I的浮点数视为long double类型 |
| 浮点数注意事项 |
| 浮点数不仅可以表达小数,也可以表达整数,比如1E2=100.0 |
|
浮点数运算精度值得注意
float a{65923600.0},b{0.000001},c{a+b}; c=?; |
五、类型转换
| 类型转换顺序表 |
| long double |
| double |
| float |
| unsigned long long |
| long long |
| unsigned long |
| long |
| unsigned int |
| int |
| 类型转换 | ||
| C++ | static_cast<目标类型>(要转换的内容) | int a=static_cast<int>(b); |
| C | 类型(要转换的内容) | int a=int(b); |

浙公网安备 33010602011771号