一、常见知识整理
1. 运算符优先级和结合
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()(括号/函数运算符) [](下标运算符) .(成员选择(对象)) ->(成员选择(指针)) |
从左到右 |
2 | !(逻辑非) ~(按位取反) +(正) -(负) ++ -- *(取值运算符) &(取地址运算符) (type)(强制类型转换) |
从右到左 |
3 | *(乘) /(除) %(取余) | 从左到右 |
4 | +(加) -(减) | 从左到右 |
5 | <<(左移) >>(右移) | 从左到右 |
6 | >(大于) >=(大于等于) <(小于) <=(小于等于) |
从左到右 |
7 | ==(等于) !=(不等于) | 从左到右 |
8 | &(按位与) | 从左到右 |
9 | ^(按位异或) | 从左到右 |
10 | |(按位或) | 从左到右 |
11 | &&(逻辑与) | 从左到右 |
12 | ||(逻辑或) | 从左到右 |
13 | ?:(条件运算符) | 从右到左 |
14 | =(赋值运算符) /= *= %= += -= >>= <<= &= |= ^= |
从右到左 |
15 | ,(逗号运算符) | 从左到右 |
2. 数据类型的字节数和数值范围
整数类型
类型 | 标识符 | 字节数 | 数值范围 | 表示方法 | ||
---|---|---|---|---|---|---|
整形 无符号整型 |
int unsigned |
4 | 32bit | -2147483648 ~ 2147483647 0 ~ 4294967295 |
-2^31 ~ 2^31-1 0 ~ 2^32-1 |
0 0u |
短整型 无符号短整型 |
short unsigned short |
2 | 16bit | -32768 ~ 32767 0 ~ 65535 |
-2^15 ~ 2^15-1 0 ~ 2^16 -1 |
- |
长整型 无符号长整形 |
long unsigned long |
4 | 32bit | 2147483648 ~ 2147483647 0 ~ 4294967295 |
-2^31 ~ 2^31-1 0 ~ 2^32-1 |
0l 0ul |
字符型 无符号字符型 |
char unsigned char |
1 | 8bit | -128 ~ 127 0 ~ 255 |
-2^7 ~ 2^7-1 0~2^8-1 |
- |
浮点数类型
类型 | 标识符 | 字节数 | 指数位宽 | 尾数位宽 | 取值范围 | 表示方法 |
---|---|---|---|---|---|---|
单精度 | float | 4 | 8bit | 23bit | -3.4×10^(38) ~ 3.4×10^(38) |
0.0f |
双精度 | double | 8 | 11bit | 52bit |
-1.7×10^(308) ~ 1.7×10^(308) |
0.0 |
二、省时间省空间的代码操作
1. 用位移操作代替乘除
乘/除2
x << 1 代替 x * 2
x >> 1 代替 x / 2
判断奇偶数
x & 0x1 == 1 代替 x % 2 == 1 (奇数)
x & 0x1 == 0 代替 x % 2 == 0 (偶数)
2. 求绝对值
int型变量n的求绝对值方法为文章来源:https://www.toymoban.com/news/detail-474808.html
unsigned n1 = n > 0 ? n : (unsigned) ~n + 1
注意:考虑到int型变量的边界,n的最小值是-2147483648,最大值是2147483647,因此最小值取绝对值后对于int型是溢出的,因此要强制类型转换成unsigned型。文章来源地址https://www.toymoban.com/news/detail-474808.html
到了这里,关于C/C++ leetcode刷题的各种小tips记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!