基本数据类型和计算
一、常量和变量
常量和变量 | ||||
常量 | 值不会改变 | |||
变量 | 值可能改变 |
起名字必须遵守的规矩 | |
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); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程