C 运算符

预计时间: 3分钟

在C语言中,运算符是告诉编译器执行特定数学或逻辑函数的符号。

C 支持一组丰富的运算符,它们是在表达式中使用的符号,用于指定在评估该表达式时要执行的操作。C 有以下运算符:

C算术运算符

算术运算符描述
+
-
*
/
%取模
++自增
--自减

C关系运算符

关系运算符描述
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于

C逻辑运算符

逻辑运算符描述
&&逻辑与
||逻辑或
!逻辑非
? :三元运算符

C按位运算符

按位运算符描述
&按位与
|按位或
^按位异或
~按位取反
<<按位左移
>>按位右移

C赋值运算符

赋值运算符描述
=赋值
+=加后赋值
-=减后赋值
*=乘后赋值
/=除后赋值
%=取模后赋值
<<=按位左移后赋值
>>=按位右移后赋值
&=按位与后赋值
^=按位异或后赋值
|=按位或后赋值

C语言赋值语句一般形式是

变量名 = 表达式;

赋值中的类型转换

混用不同类型的变量时,发生类型转换。 在一个赋值语句中,类型转换的规则是:赋值语句的右部的类型转换成左部的类型。

多重赋值

允许多变量赋同一个值。

x=y=z=0;

C数据运算符

数据运算符描述
sizeof()获取......的大小
[]数据下标
&......的地址
*......的值
->结构体解引用
.结构体引用

sizeof是编译时一元操作符,返回其操作数(变量、类型)对应数据类型的字节数。

C其它运算符

杂项描述
,逗号
()圆括号,小括号,调用函数,子表达式分组等等
(typename)类型转换
{}花括号,大括号
:冒号
//单行注释
/*多行注释开始
*/多行注释结束

逗号(,)运算符把若干表达式串在一起。 逗号的左侧总是求值为void型,也即最右侧逗号的右侧表达式变成逗号连接成的表达式的值。例如

/* 先把3赋值给y,然后把4赋值给x */
x = (y=3, y+1);

圆括号运算符用以提高括号内运算符的优先级。

优先级

优先级由高到低如下所示

  • () [] -> .
  • ! ~ ++ -- - (type) * & sizeof
  • * / %
  • + -
  • << >>
  • <<= >>=
  • == !=
  • &
  • ^
  • |
  • &&
  • ||
  • ? :
  • = += -= *= /=
  • ,

结合性

  • 所有运算符都是左结合的
  • 一元运算符 * & - 和问号运算符 ? :是右结合的
更新于2022年04月09日