>> >> >> Reference << << << <<<<<<Ref>>>>>>
>> >> >> Indexer << << << <<<<<<Idx>>>>>>
Matched: 0

Tags

    Categories

      Types

        Top Results

          Operator
          M: 2025-12-31 - ljf12825

          算术操作符

          • + 加法,一元正号
          • - 减法,取负
          • * 乘法,解引用
          • / 除法
          • % 取余
          • ++ 自增
          • -- 自减
          • == 等于
          • != 不等于
          • < 小于
          • > 大于
          • <= 小于等于
          • >= 大于等于
          • && 逻辑与
          • || 逻辑或
          • ! 逻辑非
          • & 位与,取地址
          • | 位或
          • ^ 位异或
          • ~ 位取反
          • << 左移
          • >> 右移
          • = 赋值
          • += 加后赋值
          • -= 减后赋值
          • *= 乘后赋值
          • /= 除后赋值
          • %= 取余后赋值
          • &= 位与后赋值
          • |= 位或后赋值
          • ^= 位异或后赋值
          • <<= 左移位后赋值
          • >>= 右移位后赋值
          • ?: 条件操作符
          • , 逗号操作符
          • -> 结构体
          • . 结构体成员
          • (expr) 分组运算符,改变优先级
          • func() 函数调用运算符
          • (type)expr 类型转换运算符
          • [] 数组下标
          • sizeof 返回类型或对象的字节大小
          • _Alignof 返回类型对齐要求
          • _Generic C11特性,类型泛化
          • typecast 强制类型转换
          优先级操作符结合性
          1(), [], ->, .>
          2++, --, +, -, !, ~, (type), *, &, sizeof<
          3*, /, %>
          4+, ->
          5<<, >>>
          6<, <=, >, >=>
          7==, !=>
          8&>
          9^>
          10|>
          11&&>
          12||>
          13?:<
          14=+=, -=, *=, /=, %=, &=, !=, ^=, <<=, >>=<
          15,>

          优先级(Precedence)与 结合性(Associativity)

          优先级决定了哪些运算先执行。优先级高的运算先于优先级低的运算

          结合性决定了相同优先级的运算符如何分组

          两种结合性

          1.左结合(从左到右):大多数运算符 2.右结合(从右到左):赋值、单目、三元条件运算符

          示例

          // 左结合
          int a = 10 - 5 - 2;
          
          // 右结合
          int x, y, z;
          x = y = z = 5;
          

          ()

          求值顺序

          语法树结构

          序列点

          a += ++a;
          
          • 赋值表达式本身有值
          • 前自增与后自增的返回时机不同