一、C++ 数据类型
1. 基本内置类型
- 整型:
short int短整型、int整型、long int长整型 - 字符型:
char - 浮点型:
float单精度、double双精度、long double长双精度 - 布尔型:
bool(C++ 独有,C 没有原生 bool)
2. 构造类型(由其他类型组合而成)
枚举enum、数组、结构体struct、共用体union、类class(C++ 核心特性)
3. 指针类型
存放内存地址
4. 引用类型
变量的别名(C++ 新增,C 语言没有引用)
5. 空类型 void
无类型,多用于函数返回值、通用指针
二、常量
1. 整型常量
- 十进制:正常数字,如
123 - 八进制:数字开头加 0 ,如
012 - 十六进制:数字开头加 0X / 0x ,如
0X1A
2. 浮点数常量
- 十进制小数形式:
21.456 - 指数形式:
3.14e-2等价于 \(3.14 \times 10^{-2}\)
3. 字符型常量
存储单个字符
char ch = 'a';
- 使用单引号 包裹,只能存放 1 个字符
- 占用 1 字节
4. 字符串常量
表示一串连续字符
-
C 语言写法:
char str1[] = "hello world"; -
C++ 推荐 string 类:
#include
string str = "hello world";
字符串使用双引号 末尾自动隐藏结束符
\0
"abc"实际占 4 字节(a b c \0)"abc\n"4 个可见字符,占用 5 字节(a b c \n \0)
三、各类类型占用内存 & 取值说明
-
整型:二进制存储
short int:2 字节int:4 字节long int:8 字节unsigned int无符号整型:4 字节(只存非负数)
内存单位:8bit (位) = 1 字节
-
浮点型
float单精度:4 字节,有效数字 6 位double双精度:8 字节,有效数字 15 位long double长双精度:16 字节,有效数字 18~19 位
-
bool 布尔类型
true真,底层值为 1false假,底层值为 0
四、变量
变量命名规则
- 只能由字母、数字、下划线组成,首字符不能是数字
- 不能使用 C++ 关键字作为变量名
- 区分大小写,
A和a是两个变量
变量作用域
- 函数内部定义:局部变量
- 函数外部定义:全局变量
- 函数形参:属于局部变量
五、基础运算符
1. 算术运算符 + - * / % ++ --
-
整数相除,结果仍为整数(截断小数);小数之间可以相除
-
运算只要存在
float,结果默认double类型 -
取模
%只支持整型,小数不能取模 -
除法、取模运算,除数不能为 0,会直接报错
-
自增 / 自减:前置、后置单独写时无差别
- 前置
++a:先自增,再参与表达式计算 - 后置
a++:先参与表达式计算,运算结束后再自增
例:
a3++ *10先计算a3*10,表达式结束后a3 += 1 - 前置
2. 赋值运算符
=、+=、-=、*=、/=、%=
3. 比较运算符
==、!=、>、<、>=、<=
判等是两个等于号
==,单个=是赋值,极易踩坑
4. 逻辑运算符
&&逻辑与、||逻辑或、!逻辑非
5. 位运算符
&按位与、|按位或、^异或、~按位取反、<<左移、>>右移
&按位与:两位都为 1,结果才是 1,否则 0|按位或:两位都为 0 才是 0,否则 1^异或:相同为 0,不同为 1
6. 杂项运算符
sizeof():返回变量 / 类型占用的字节大小
六、C++ 运算符优先级总表
从上到下优先级依次降低;同行优先级相同,看结合性决定求值顺序
表格
| 优先级 | 类别 | 运算符 | 结合性 | ||
|---|---|---|---|---|---|
| 1(最高) | 后缀运算符 | () [] -> . ++ -- |
从左到右 | ||
| 2 | 一元运算符 | + - ! ~ ++ -- (type) * & sizeof |
从右到左 | ||
| 3 | 乘除取模 | * / % |
从左到右 | ||
| 4 | 加减 | + - |
从左到右 | ||
| 5 | 移位 | << >> |
从左到右 | ||
| 6 | 关系比较 | < <= > >= |
从左到右 | ||
| 7 | 相等判断 | == != |
从左到右 | ||
| 8 | 位与 AND | & |
从左到右 | ||
| 9 | 位异或 XOR | ^ |
从左到右 | ||
| 10 | 位或 OR | ` | ` | 从左到右 | |
| 11 | 逻辑与 AND | && |
从左到右 | ||
| 12 | 逻辑或 OR | ` | ` | 从左到右 | |
| 13 | 条件(三目) | ?: |
从右到左 | ||
| 14 | 复合赋值 | `= += -= *= /= %= >>= <<= &= ^= | =` | 从右到左 | |
| 15(最低) | 逗号 | , |
从左到右 |
复习重点
- 右结合运算符 :一元运算符、三目
?:、赋值运算符,其余大多左结合&&优先级高于||- 位运算
& ^ |优先级高于逻辑&& ||,写 if 条件容易出错- 逗号运算符优先级最低