C语言操作符详解(2)

一、单目操作符

单⽬操作符有这些: !、++、--、&、*、+、-、~ 、sizeof、(类型)

单⽬操作符的特点是只有⼀个操作数,在单⽬操作符中只有&(取地址)和*(解引用)没有介绍,这2个操作符,我们放在学习指针的时候学习。

二、逗号表达式

exp1, exp2, exp3, …expN

 逗号表达式,就是用逗号隔开的多个表达式。逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果。

请先自己想想下面的问题:

//代码1
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);//逗号表达式
c是多少?
//代码2
if (a = b + 1, c = a / 2, d > 0)
//代码3
a = get_val();
count_val(a);
while (a > 0)
{
	//业务处理
	a = get_val();
	count_val(a);
}
如果使⽤逗号表达式,改写:
while (a = get_val(), count_val(a), a > 0)
{
	//业务处理
}

答案如下:

代码1:       c=13

代码2:    仅考虑d是否大于0

代码3:    会从左到右进行计算,最后考虑a>0

 三、下标访问[ ]、函数调用( )

1.下标引用操作符

int arr[10];
arr[9] = 10;
[ ]的两个操作数是arr和9

2.函数调用操作符

#include <stdio.h>
void test1()
{
	printf("hehe\n");
}
void test2(const char* str)
{
	printf("%s\n", str);
}
int main()
{
	test1(); //这⾥的()就是作为函数调⽤操作符。
	test2("hello bit.");//这⾥的()就是函数调⽤操作符。
	return 0;
}

四、操作符的属性:优先级和结合性

1.优先级:优先级指的是,如果⼀个表达式包含多个运算符,哪个运算符应该优先执⾏。各种运算符的优先级是不⼀样的。可以与数学中的加减乘除混合运算来联系。

2.结合性:如果两个运算符优先级相同,优先级没办法确定先计算哪个了,这时候就看结合性了,则根据运算符 是左结合,还是右结合,决定执⾏顺序。⼤部分运算符是左结合(从左到右执⾏),少数运算符是右结合(从右到左执⾏),⽐如赋值运算符( = )。

5 * 6 / 2

 上⾯⽰例中, * 和 / 的优先级相同,它们都是左结合运算符,所以从左到右执⾏,先计算 5 * 6 , 再计算 6 / 2 。

运算符的优先级顺序很多,下⾯是部分运算符的优先级顺序(按照优先级从⾼到低排列),建议⼤概 记住这些操作符的优先级就⾏,其他操作符在使⽤的时候查看下⾯表格就可以了。

• 圆括号( () )

• ⾃增运算符( ++ ),⾃减运算符( -- )

• 单⽬运算符( + 和 - )

• 乘法( * ),除法( / )

• 加法( + ),减法( - )

• 关系运算符( < 、 > 等)

• 赋值运算符( = ) 由于圆括号的优先级最⾼,可以使用它改变其他运算符的优先级。

注意:后置自增自减的优先级高于前置自增自减

        最后,还有一点表达式求值没有说到,会在下一篇中发布。创作不易,请各位小主点个赞吧~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值