C 语言运算符的优先级和结合性

运算符的结合性和优先级

优先级 运算符 描述 结合性
1 ()
[]
->
.
函数调用、数组下标、结构体 / 联合体成员通过指针访问、结构体 / 联合体成员访问 从左到右
2 !
~
++ (前缀)
-- (前缀)
+ (一元)
- (一元)
* (间接寻址)
& (取地址)
sizeof
(type)
逻辑非、按位取反、前缀自增、前缀自减、一元正号、一元负号、间接寻址、取地址、获取操作数的大小、类型转换 从右到左
3 *
/
%
乘法、除法、取模 从左到右
4 +
-
加法、减法 从左到右
5 <<
>>
左移、右移 从左到右
6 <
<=
>
>=
小于、小于等于、大于、大于等于 从左到右
7 ==
!=
相等、不相等 从左到右
8 & 按位与 从左到右
9 ^ 按位异或 从左到右
10 <code>|</code> 按位或 从左到右
11 && 逻辑与 从左到右
12 <code>||</code> 逻辑或 从左到右
13 ? : 条件运算符(三元运算符) 从右到左
14 =
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
<code>|=</code>
赋值、复合赋值运算符 从右到左
15 , 逗号运算符 从左到右

上手demo

#include <stdio.h>

int main() {
    int a = 2, b = 3, c = 4;

    // 乘法优先级高于加法
    int result1 = a + b * c;  // 先计算 b * c,结果为 12,再加上 a,最终结果为 14
    printf("result1: %d\n", result1);  

    // 使用括号改变优先级
    int result2 = (a + b) * c;  // 先计算 a + b,结果为 5,再乘以 c,最终结果为 20
    printf("result2: %d\n", result2);  

    // 后缀自增和前缀自增
    int d = 5;
    int result3 = d++ + ++d;  // 先使用 d 的值 5 进行计算,然后 d 自增,再将自增后的 d(此时为 7)加 1,最终结果为 12
    printf("result3: %d\n", result3);  

    // 逻辑运算符
    int result4 = (a < b) && (b < c);  // 先计算 a < b 和 b < c,结果都为真,最终结果为 1
    printf("result4: %d\n", result4);  

    // 条件运算符
    int result5 = (a > b)? a : b;  // a 不大于 b,所以结果为 b 的值,即 3
    printf("result5: %d\n", result5);  

    // 复合赋值运算符
    a += b;  // 等价于 a =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值