目录
1. 操作符汇总表
2. 关系操作符
3. 条件操作符
4. 逗号表达式
5. 下标引用、函数调用和结构成员
5.1 下标引用
5.2 函数调用操作符
5.3 结构成员
6. 操作符的属性
6.1 操作符的优先级
大家好呀!上篇文章中我们详细讲解了操作符的前半部分,这篇文章我将继续为大家讲解剩余的操作符知识及其作用。我依旧是采用 代码+讲解 的形式给大家详细的介绍一下剩余的各种操作符!
1. 操作符汇总表
以下是各类型的操作符汇总表,方便大家后续对照学习呀!
(1) 算术操作符: + - * / %(取模操作符(取余),只适用于整数运算)
注:除法有:整数除法(如:9/2)、 浮点数除法(需要保证除数和被除数中至少有一个数是浮点数,如9.0/4)。
(2) 移位操作符(移动的是二进制位): >>(右移) <<(左移)
(3) 位操作符(操作的是二进制位): & ^ |
(4) 赋值操作符: = += -= *= /= &= ^= |= >>= <<=
(5) 单目操作符:! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
注:2+3,+则为双目操作符,即有两个操作数, 单目操作符:只有一个操作数
(6) 关系操作符: >
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
(7) 逻辑操作符: && 逻辑与
|| 逻辑或
(8) 条件操作符(三目操作符):exp1 ? exp2 : exp3
真 执行 不执行
假 不执行 执行
(9) 逗号表达式:exp1, exp2, exp3, …expN
(10) 下标引用、函数调用和结构成员: [](下标引用操作符) ()(函数调用操作符) . ->
在上一篇文章中我们讲解至 单目操作符,那这篇文章小编就从 关系操作符 开始为各位老铁们讲解!
C语言基础(7)之操作符(1)(详解)https://blog.csdn.net/L_Daniel/article/details/138674003如果老铁们还没了解过前面的操作符,可以点击上面的链接浏览学习呀!
2. 关系操作符
关系操作符,通俗来讲就是比较两个操作数之间的大小、是否相等之间的关系。
而关系操作符主要有6种:> >= < <= != ==
这些操作符多用于判断语句、循环语句等。举例如下:
对于 关系操作符 需要注意的两点:
1. 在编程过程中要小心 == 和 = 之间的写错而导致的错误。
2. 关系操作符只能应用到合适的类型上,而不能应用到字符串、结构体等类型上。如字符串之间的比较应该用 strcmp 库函数。
3. 条件操作符
条件操作符 又称 三目操作符(因为有三个操作数)。其操作规则为:exp1 ? exp2 : exp3 (其中exp 可以为表达式 或 常量)
对于 exp1 ? exp2 : exp3 有两种情况:
(1) 如果 exp1 的结果为真,则执行 exp2,而 exp3 不执行。
(2) 如果 exp1 的结果为假,则执行 exp3,而 exp2 不执行。
可能很多老铁会好奇 条件操作符 有什么作用呢? 其实 条件操作符 的功能就类似于 if......else......语句。举例如下:
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int m = 0;
scanf("%d %d", &a, &b);
/*if (a > b)
m = a;
else
m = b;*/
m = (a > b) ? a : b;
printf("m = %d\n", m);
return 0;
}
即如果 实现找两个数之间的较大值 时,使用 条件操作符 会比使用 if...else...选择语句 看起来更整洁简练。
4. 逗号表达式
逗号表达式为:exp1, exp2, exp3, …expN
需要注意的是:逗号表达式中并没有限制操作数(表达式)的个数。因此逗号表达式是从左向右依次执行的,整个逗号表达式的结果是最后一个表达式的结果。
举例如下:
#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);
printf("%d\n", c);
return 0;
}
5. 下标引用、函数调用和结构成员
5.1 下标引用
下标引用操作符为:[]。而其主要是运用在数组中的。
在数组中,数组的起始是有下标的,下标从0开始,通过 下标引用操作符 可以调用数组中的元素。
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5 };
// 0 1 2 3 4 5 6 7 8 9
printf("%d\n", arr[2]);
return 0;
}
在上面这个例子中,通过 下标引用操作符 调用了数组arr中的第三个元素,而arr 和 2 是 [] 的两个操作数。
5.2 函数调用操作符
函数调用操作符为:() 也就是说,当我们想要调用函数时,必须带上函数调用操作符。这也印证了上一篇文章中说明的 sizeof是操作符而不是函数。
在上面这个例子中,小编调用了strlen这个库函数,因此 () 的操作数是: strlen 和 "abc"。
注:对于函数调用操作符来讲,最少有1个操作数。因为我们在调用函数时,函数名 已经是 函数调用操作符 的1个操作数了。
5.3 结构成员
结构成员的操作符是:. 和 -> 结构成员主要是运用在结构体上的,后续我们在讲解结构体时会讲解这两个操作符,这里小编就不细讲了哈!
6. 操作符的属性
复杂表达式的求值有三个影响的因素。
1. 操作符的优先级
2. 操作符的结合性
3. 是否控制求值顺序。
两个相邻的操作符先执行哪个?取决于他们的优先级。如果两者的优先级相同,取决于他们的结合性。
6.1 操作符的优先级
下面小编给大家整理出了各个操作符之间的优先级:
今天就先分享到这里吧,如果有什么不懂的地方欢迎留言一起探讨呀!
欲知后事如何,且看下篇文章!