Skip to content
On this page

C语言运算符


标签:clang/basic  

优先级

C 语言中的运算符按照优先顺序是 :

单 , 算 , 关 , 逻 , 条 , 赋 , 逗

  • 单目运算符 : 只有一个操作参数, 比如 -num, n++......
  • 双目运算符 : 需要两个操作参数, 比如 a+b, 3*5......
  • 三目运算符 : 需要三个操作参数, a ? b : c

表达式

  • 由操作参数合运算符返回一个确定值的式子叫做表达式
  • 操作数 : 参与运算的数据. 常量, 变量, 或者表达式.
  • 运算符 : 执行特定运算的符号

左值和右值

  • 左值 ( lvalue ) 和右值 ( rvalue ) 是对于赋值运算符而言的
  • 左值 : 既能放在等号左侧的值 , 也能放在等号右侧的值 ( 有内存空间地址 )
  • 右值 : 只能放在等号右侧的值 , 如常量 , 表达式结果

算术运算符

  • +, -, *, /, %......

  • 除法:

  • 左右整数时返回整数, 5/2 = 2

  • 有小数参与时返回小数, 5.0/2 = 2.5

  • 整数除10, 相当于砍掉个位

  • 除数不能为 0 ( 编译能通过, 但运行出错 )

  • 模运算:

  • 相除后的余数部分

  • 两侧只能是整数

关系运算符

  • >, <, ==, >=, <=, !=
  • 返回整数 0/1
  • 两边都是合法表达式

逻辑运算符

  • &&, ||, !
  • 优先级 !, &&, ||
  • 结果是整数 0/1
  • 两边是合法表达式
  • 短路

条件表达式

  • 唯一三目运算符
  • 表达式 ? 表达式 : 表达式

赋值运算符

  • =: 一般的赋值运算符
  • +=, *=... : 复合赋值运算符
  • 赋值运算符的联级使用: a = b = 6

位运算符

#TBD/LV2

sizeof

在 C 语言中, sizeof 不是运算符而是单目运算符, 我们通常写 sizeof(n) 其实类似其他单目运算符 ++(n) 这样子, sizeof 中的表达式中的变量名不会被求值, 所以 sizeof 的运算符不会改变:

c
int a = 10;
int size = sizeof(a++);
printf("a = %d, size = %d\n", a, size);

输出的结果任然为 a = 10 .

Last updated: