C语言运算符优先级

发布时间:2023年12月29日

引言:

写这篇文章的原因主要是因为本人太长时间没有梳理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)

?

?

说明:
同一优先级的运算符,运算次序由结合方向所决定。

简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

文章来源:https://blog.csdn.net/2302_80193662/article/details/135258586
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。