【C语言】运算符优先级


最重要的是要搞清楚运算符的优先级和运算顺序。

1. 括号是第一

在这里插入图片描述

2. 【右结合性】单目是其次

  • 一般来说如果想考你优先级的话大概率是不会给你括号的。
  • 因此一定记住单目运算符优先级是第二高的、而且他还是右结合
  • 注意这个指针运算 ∗ * + + , − − ++,-- ++,运算,这里经常会设置问题。
*p++表示:p++,然后再取该地址的值。即*(p++)
(*p)++表示:将p指向的这个值++

已知:int a[ ]={1,3,5,7}, y,*p= a;为使变量y的值为3,下列语句正确的是 D。
A) y=++*p++;  表示先将p++,然后取p指向的值1,然后++1,得到的是2,此时p指向的是a[1]了
B) y=++(*p++); 这个括号加了和没加没区别。
C) y=(++*p)++; c语言里面这是一种非法的表示(不过c++里面是合法的);就当作合法来看,先将++(*p),此时p指向的a[0]=2,然后再把a[0]++,输出结果是2。执行完了之后a[0]=3
D) y=(*++p)++;++p,此时p指向a[1],然后取*p的值3,进行++,得到的是3。执行完了之后a[1]的值是4

在这里插入图片描述

3. 加减乘除余

按照算术的计算顺序计算。

4. 移位

5. 关系运算符( ≤ , ≥ , < , > \leq,\geq,<,> ,,<,>高于 = , ! = =,!= =,!=

4 > 3 & & 7 < 5 − ! 0 4>3\&\&7<5 - !0 4>3&&7<5!0:先算算术、再比较、再逻辑运算
4 > 3 & & 7 < 4 4>3\&\&7<4 4>3&&7<4即0&&0=0

6. 位运算与亦或(与 高于 亦或 高于 或)

位运算:与& 高于 亦或~ 高于 或|

7. 逻辑与和或(与&& 高于 或|| )

在这里需要注意&&的优先级高于 ∣ ∣ ||

int x = 10;
int y = (1 <= x && x <= 10 || 20 <= x && x <= 30);
//等价于int y = ( (1 <= x && x <= 10) || (20 <= x && x <= 30));

在这里插入图片描述

补充:位运算高于逻辑(字符少的(&)比字符多的(&&)更牛
在这里插入图片描述

8. 【右结合性】问号运算符

9. 【右结合性】赋值运算符(=最高,+= 高于 &= 高于 <<= )

在这里插入图片描述

10. 逗号运算符

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值