C语言基础(8)之操作符(2)(详解)

目录

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)(详解)icon-default.png?t=O83Ahttps://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 操作符的优先级

        下面小编给大家整理出了各个操作符之间的优先级

        今天就先分享到这里吧,如果有什么不懂的地方欢迎留言一起探讨呀!

        欲知后事如何,且看下篇文章!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值