c运算符优先顺序,结合规则

  1. C 运算符优先级顺序
    • 最高优先级
      • 圆括号(():用于改变运算顺序,表达式在圆括号内的会优先计算。例如,在(2 + 3) * 4中,先计算括号内的2 + 3得到 5,再乘以 4 得到 20。
      • 数组下标访问([]:用于访问数组中的元素。例如,int arr[5]; arr[2]表示访问数组arr的第 3 个元素(数组下标从 0 开始)。
      • 结构体成员访问(.->:对于结构体变量,使用.访问成员;对于指向结构体的指针,使用->访问成员。例如,有结构体struct Point {int x; int y;}; struct Point p; p.x访问结构体px成员。如果是struct Point* ptr; ptr->x访问指针ptr所指结构体的x成员。
    • 次高优先级
      • 一元运算符(++--+-*&~!
        • 自增(++)和自减(--)运算符:分为前缀和后缀形式。前缀形式(如++i)是先自增 / 减然后再使用变量的值;后缀形式(如i++)是先使用变量的值然后再自增 / 减。例如,int i = 3; int a = ++i;此时a的值为 4,i的值也为 4。而int i = 3; int b = i++;此时b的值为 3,i的值为 4。
        • 正号(+)和负号(-)运算符:用于表示正数和负数。例如,int a = -3;表示a是负数 3。
        • 取地址(&)和间接访问(*)运算符&用于获取变量的地址,*用于访问指针所指向的变量。例如,int a = 5; int* ptr = &a;,这里&a获取a的地址赋值给ptr,然后*ptr可以访问ptr所指向的变量a
        • 按位取反(~)和逻辑非(!)运算符~是对整数进行按位取反操作,!是对布尔值进行取反操作。例如,对于整数int a = 3;(二进制为00000011),~a得到11111100(在有符号整数表示下是 - 4)。对于布尔值bool b = true;!b得到false
    • 算术运算符(从高到低)
      • 乘法(*)、除法(/)、取余(%:按照数学中的运算顺序进行。例如,int a = 10 / 2 * 3;先计算除法10/2 = 5,再计算乘法5 * 3 = 15。取余运算符%用于计算除法的余数,如int b = 7 % 3;得到 1。
      • 加法(+)和减法(-:例如,int c = 4 + 3 - 2;先计算加法4 + 3 = 7,再计算减法7 - 2 = 5
    • 移位运算符(<<>>
      • 左移(<<)和右移(>>)运算符:用于将整数的二进制位向左或向右移动。例如,对于整数int a = 4;(二进制为00000100),a << 1a的二进制位左移 1 位,得到00001000,即 8。a >> 1a的二进制位右移 1 位,得到00000010,即 2。
    • 关系运算符(>>=<<===!=
      • 用于比较两个值的大小或相等性。例如,int a = 5; int b = 3; a > b返回truea == b返回false。这些关系运算符在条件判断语句(如if语句)中经常使用。
    • 位运算符(&^|
      • 按位与(&)、按位异或(^)和按位或(|)运算符:对整数的二进制位进行操作。例如,对于整数int a = 3(二进制为00000011)和int b = 5(二进制为00000101),a & b得到00000001(即 1),a ^ b得到00000110(即 6),a | b得到00000111(即 7)。
    • 逻辑运算符(&&||
      • 逻辑与(&&)和逻辑或(||)运算符:用于组合多个条件。&&只有当两个条件都为true时才返回true||只要有一个条件为true就返回true。例如,bool a = true; bool b = false; a && b返回falsea || b返回true
    • 条件运算符(?:
      • 这是一个三目运算符,语法为表达式1? 表达式2 : 表达式3。如果表达式1true,则返回表达式2的值;如果表达式1false,则返回表达式3的值。例如,int a = 3 > 2? 5 : 7;,因为3 > 2true,所以a的值为 5。
    • 赋值运算符(=+=-=*=/=%=<<=>>=&=^=|=
      • 用于给变量赋值。例如,int a = 3;使用=赋值。a += 2;等价于a = a + 2;,先进行加法运算,再将结果赋值给a。其他复合赋值运算符同理。
  2. C 运算符结合规则
    • 左结合
      • 算术运算符(加法、减法、乘法、除法等):例如,int a = 10 - 5 + 3;,按照左结合规则,先计算10 - 5 = 5,然后再计算5 + 3 = 8。同样,对于乘法和除法,如int b = 8 / 2 * 2;,先计算8 / 2 = 4,然后再计算4 * 2 = 8
      • 移位运算符(<<>>:例如,int c = 1 << 2 << 3;,先计算1 << 2得到 4,然后再计算4 << 3得到 32。
      • 关系运算符(>>=<<===!=:例如,int d = 3 < 5 < 7;,先判断3 < 5true(在 C 中true用 1 表示),然后再判断1 < 7true
      • 位运算符(&^|:例如,int e = 3 & 2 & 1;,先计算3 & 2得到 2,然后再计算2 & 1得到 0。
      • 逻辑运算符(&&||:例如,bool f = true && false || true;,先计算true && false得到false,然后再计算false || true得到true
    • 右结合
      • 一元运算符(++--+-*&~!:例如,int g = - -3;,先对 3 应用一元负号得到-3,然后再对-3应用一元负号,最终结果为 3。
      • 赋值运算符(=+=-=*=/=等):例如,int a = b = c = 3;,赋值操作是从右向左进行的,先将 3 赋值给c,然后将c的值赋值给b,最后将b的值赋值给a
      • 条件运算符(?::例如,int h = a > b? c > d? e : f : g;,先计算c > d? e : f,然后再根据a > b的结果来决定返回前面计算的结果还是g的值。

python运算符优先顺序,结合规则-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

1234哈哈哈哈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值