您现在的位置是:首页 >其他 >C/C++ leetcode刷题的各种小tips记录网站首页其他

C/C++ leetcode刷题的各种小tips记录

精致的螺旋线 2024-09-02 00:01:02
简介C/C++ leetcode刷题的各种小tips记录

一、常见知识整理

1. 运算符优先级和结合

优先级运算符结合性
1

()(括号/函数运算符)        [](下标运算符)

 .(成员选择(对象))        ->(成员选择(指针))

从左到右
2

!(逻辑非)        ~(按位取反)

+(正)        -(负)

++        --

*(取值运算符)        &(取地址运算符)

(type)(强制类型转换)

从右到左
3*(乘)        /(除)        %(取余)从左到右
4+(加)        -(减)从左到右
5<<(左移)        >>(右移)从左到右
6

>(大于)        >=(大于等于)

<(小于)        <=(小于等于)

从左到右
7==(等于)        !=(不等于)从左到右
8&(按位与)从左到右
9^(按位异或)从左到右
10|(按位或)从左到右
11&&(逻辑与)从左到右
12||(逻辑或)从左到右
13?:(条件运算符)从右到左
14

=(赋值运算符)

/=        *=        %=

+=        -=

>>=        <<=

&=        |=        ^=

从右到左
15,(逗号运算符)从左到右

2. 数据类型的字节数和数值范围

整数类型

类型标识符字节数数值范围表示方法

整形

无符号整型

int

unsigned

432bit

-2147483648 ~ 2147483647

0 ~ 4294967295

-2^31 ~ 2^31-1

0 ~ 2^32-1

0

0u

短整型

无符号短整型

short

unsigned short

216bit

-32768 ~ 32767

0 ~ 65535

-2^15 ~ 2^15-1

0 ~ 2^16 -1

-

长整型

无符号长整形

long

unsigned long

432bit

2147483648 ~ 2147483647

0 ~ 4294967295

-2^31 ~ 2^31-1

0 ~ 2^32-1

0l

0ul

字符型

无符号字符型

char

unsigned char

18bit

-128 ~ 127

0 ~ 255

-2^7 ~ 2^7-1

0~2^8-1

-

浮点数类型

类型标识符字节数指数位宽尾数位宽取值范围表示方法
单精度float48bit23bit

-3.4×10^(38) ~ 3.4×10^(38)

0.0f
双精度double811bit

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的求绝对值方法为

unsigned n1 = n > 0 ? n : (unsigned) ~n + 1

注意:考虑到int型变量的边界,n的最小值是-2147483648,最大值是2147483647,因此最小值取绝对值后对于int型是溢出的,因此要强制类型转换成unsigned型。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。