写这篇文章的原因主要是因为本人太长时间没有梳理C语言知识点,本来就对优先级有点迷惑,借写博客的机会顺便对运算符的优先级进行整理。
1. 赋值运算符:=? ?+=? -=? 等
2. 加、减运算符:+ -
3. 符号运算符:+ -(【注意】不是加减运算符,这是表示正负的运算符)
用于改变表达式的正负:
int a = 100;
-a; // 表达式结果为-100
【请注意】:+不能改变表达式的正负,请使用负负得正。
int a = -100;
+a; // 表达式结果为-100
-a; // 表达式结果为100
4. 乘、除运算符:* /
5. 其他运算符:(笔者在此只介绍4个比较有用的运算符)
? ? 5.1 sizeof、size_t运算符:
? ? ? ? ?例:
int n = 0;
size_t intsize;
intsize = sizeof (int);
printf("n = %d, n has %zd bytes; all ints have %zd bytes.\n",
n, sizeof n, intsize);
//输出结果:n = 0, n has 4 bytes; all ints have 4 bytes.
? ? ? 5.2??求模运算符:%(读作“求模”)
? ? ? ? ? ? ? 在这里笔者举一些负数的例子:
? ? ? ? ? ? ? ? 11 / 5 得2, 11 % 5 得1;
? ? ? ? ? ? ? ? 11 / -5 得-2, 11 % -2?得1;? ? ? ?
? ? ? ? ? ? ? ?-11 / -5 得2, -11 % -5 得-1;
? ? ? ? ? ? ? ?-11 / 5 得-2, -11 % 5 得-1;
? ? ? ? 从这里不难看出,如果第1个运算对象是负数,那么求模的结果为负数;如果第1个运算对象是正数,那么求模的结果也为正数。
? ? ? ?5.3 递增运算符:++
? ? ? ?5.4 递减运算符:--
?6. 关系运算符:> <? 等
初级运算符( )、[ ]、->、.? (一共四个)
高于? 单目运算符 ?-(取负)++? --?
高于? 算数运算符(先乘除后加减) ?
高于? 关系运算符? 1. !(逻辑非) 2. >、<、>=、<=(大于、小于、大于等于、小于等于) 3. ==、!=(等于、不等于)?
高于??逻辑运算符(不包括!?? !是一个例外) ?
高于? 条件运算符 ?
高于? 赋值运算符 ?
高于? 逗号运算符。
以下表格转载自知乎
C语言运算符优先级--超级详细大全 - 知乎 (zhihu.com)
?
?
说明:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符