前言:
总结的知识希望能帮助到大家对于知识体系的认识更清晰,欢迎提供建议。不足之处我会及时进行补充与更正,谢谢支持!听说喜欢点赞的大佬们未来都年薪百万呢~
目录
1.操作符的分类
操作符又被称为运算符。
操作符可以分为以下三种:
- 一元操作符(单目操作符):只对一个操作数进行操作。例如,一元加(+)和一元减(-)。
- 二元操作符(双目操作符):对两个操作数进行操作。例如,加(+)、减(-)、乘(*)、除(/),按位与(&)、按位或(|)等。
- 三元操作符:对三个操作数进行操作。例如,条件(三元)操作符(在C、C++、Java等语言中表示为“? :”)。
1.1 一元操作符(单目操作符)
一元操作符只涉及一个操作数。在编程中,这些操作符通常用于执行某种特定的操作或转换,而不需要比较或组合两个值。
1.1.1前置++、--
int a=2023;
int b=++a;
口诀:先+1,后使用
等价于下面
int a=2023;
a=a+1;
b=a;
b=2024;--的话以此类推就好了~
1.1.2 后置++、--
int a=2024;
int b=a++;
等价于下面
int a=2024;
int b=a;
a=a+1;
口诀:先使用,后+1
--以此类推~
1.1.3 逻辑非 (!)
逻辑非是一种基本的逻辑运算,它用于将布尔值取反。在逻辑运算中,逻辑非运算符通常表示为“!”。如果某个值为真(非零),则逻辑非运算后的结果为假(0);如果某个值为假(0),则逻辑非运算后的结果为真(非零)。主要用于条件判断、逻辑控制和错误处理等方面。
1.1.4 按位取反 (~)
位取反操作符 ~
用于对整数的二进制位进行取反操作。它将每个位从1变为0,从0变为1。
unsigned int num = 60; // 60的二进制表示是 0011 1100
unsigned int result;
// 使用位取反操作符
result = ~num;
printf("The original number:%u\n", num);
printf("%u\n", result);
这里,4294967235
是~60
的结果。无符号整数会自然地进行模2的幂运算,所以最高位(符号位)的取反并不会导致符号的改变,而是简单地翻转了所有的位。对于有符号整数,情况会更加复杂,因为位取反可能会影响符号位,从而导致整数溢出或符号变化。因此,在实际应用中,通常对无符号整数使用位取反操作符。
1.2 二元操作符(双目操作符)
二元操作符涉及两个操作数,用于比较、组合或转换这两个操作数。
1.2.1 算术操作符
没太多好说的,执行基本的数学运算,包括加法(+)、减法(-)、乘法(*)、除法(/)和取模(%)。它们用于对数值类型的数据进行算术运算。
1.2.2 比较操作符
用于比较两个操作数的大小或是否相等,返回布尔值(真或假)。包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)。常用于条件判断和控制流程。
1.2.3 逻辑操作符
用于组合或修改布尔值,包括逻辑与(&&)、逻辑或(||)。逻辑与和逻辑或通常用于组合多个条件表达式。
&& 逻辑与 两边运算量都为1时,结果才为真
|| 逻辑或 两边运算量都为0时,结果才为假,否则为真
1.2.4 位操作符
位操作符直接对操作数的二进制位进行操作。注意只能是整数。包括按位与(&)、按位或(|)、按位异或(^)、按位取反~,虽然按位取反通常被视为一元操作符,但在某些地方也可以作为二元操作符的一部分使用)、左移(<<)和右移(>>)。它们用于执行位级别的操作,如设置、清除或切换特定的位标志。
按位与(&):同1为1,见0为0
按位或(|):同0为0,见1为1
按位异或(^):相同为0,相异为1
左移(<<):符号位不变,左边丢弃,右边补0。
右移(>>)(算数右移):左边用原有的值符号位补充,右边丢弃。
1.2.5 赋值操作符
这些操作符用于给变量赋值,包括简单的赋值(=)以及复合赋值操作符(如+=、-=、*=、/=等)。结合了算术或位操作与赋值操作,使得代码更简洁。
1.3 三元操作符(三目操作符)
三元操作符涉及三个元素,通常用于根据条件选择两个结果之一。也称为条件操作符,其形式为 (条件) ? 结果1 : 结果2
。它首先评估条件,然后根据条件的真假返回相应的结果。
int a = 10;
int b = 20;
int max;
// 使用三元操作符比较a和b的值,并将较大值赋给max
max = (a > b) ? a : b;
//a>b为真结果为max=a,为假则为b
2.占位符的分类
C语言中占位符是在编程和格式化文本中用于表示将来要替换为实际数据或值的标记,主要用于格式化输出。
2.1 整数类型占位符
%d
:用于输出十进制整数类型(包括short、int、long、long long等)。%u
:用于输出无符号整数类型(包括unsigned short、unsigned int、unsigned long、unsigned long long等)。%ld
:用于输出十进制long int类型。%lld
:用于输出十进制long long int类型。
2.2 浮点数类型占位符
%f
:用于输出浮点数类型(包括float、double、long double等)。%e
、%E
:用于以科学计数法输出浮点数,其中%e
使用小写 'e' 表示指数部分,%E
使用大写 'E'。
2.3 字符类型占位符
%c
:用于输出字符类型(包括char)。%s
:用于输出字符串类型(即指向字符数组或字符串字面量的char *类)
2.4 指针类型占位符
%p
:用于输出指针类型(即指向任意类型的指针)
3.转义符的分类
转义字符的主要作用是将普通字符转化为具有特殊含义的字符,或者将特殊字符转化为普通字符。使用转义字符可以方便地插入那些不容易直接输入的字符,或者改变字符的原始含义。
3.1 一般转义符
由两个字符组成,但只代表一个字符\n
代表换行,\t
代表制表符,\r
代表回车,\v
代表垂直制表符,\b
代表退格符,\f
代表换页符,\\
代表反斜杠本身,\'
代表单引号,\"
代表双引号。
3.2 八进制转义符
这种转义字符由反斜杠\
和随后的1~3个八进制数字构成。例如,\60
、\101
、\141
分别表示字符'0'、'A'和'a'。
3.3 十六进制转义字符
这种转义字符由反斜杠\
、字母x
(或X
)及随后的1~2个十六进制数字构成。例如,\x30
、\x41
、\X61
分别表示字符'0'、'A'和'a'。同样,字符集中的所有字符都可以用十六进制转义字符表示。