C语言 运算符

运算符优先级别

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

--

()

圆括号

(表达式)/函数名(形参表)

--

.

成员选择(对象)

对象.成员名

--

->

成员选择(指针)

对象指针->成员名

--

2

-

负号运算符

-表达式

右到左

单目运算符

~

按位取反运算符

~表达式

++

自增运算符

++变量名/变量名++

--

自减运算符

--变量名/变量名--

*

取值运算符

*指针变量

&

取地址运算符

&变量名

!

逻辑非运算符

!表达式

(类型)

强制类型转换

(数据类型)表达式

--

sizeof

长度运算符

sizeof(表达式)

--

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

%

余数(取模)

整型表达式%整型表达式

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

5

<<

左移

变量<<表达式

左到右

双目运算符

>>

右移

变量>>表达式

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

<

小于

表达式<表达式

<=

小于等于

表达式<=表达式

7

==

等于

表达式==表达式

左到右

双目运算符

=

不等于

表达式!= 表达式

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1?

表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

--

/=

除后赋值

变量/=表达式

--

*=

乘后赋值

变量*=表达式

--

%=

取模后赋值

变量%=表达式

--

+=

加后赋值

变量+=表达式

--

-=

减后赋值

变量-=表达式

--

<<=

左移后赋值

变量<<=表达式

--

>>=

右移后赋值

变量>>=表达式

--

&=

按位与后赋值

变量&=表达式

--

^=

按位异或后赋值

变量^=表达式

--

|=

按位或后赋值

变量|=表达式

--

15

逗号运算符

表达式,表达式,…

左到右

--

常用运算符分类

运算符类型

作用

算术运算符

用于处理四则运算

赋值运算符

用于将表达式的值赋给变量

比较运算符

用于表达式的比较,并返回一个真值或假值

逻辑运算符

用于根据表达式的值返回真值或假值

位运算符

用于处理数据的位运算

sizeof运算符

用于求字节数长度

算术运算符

注意事项

  • 1、0 不能作为除数。
  • 2、取余只能对整形操作。
  • 3、++a:先自己进行+1在计算表达式结果(推荐使用)
  • 4、a++:先进行表达式结果赋值变量,在进行+1
  • 5、二义性:同时在一个表达式中存在 ++a --a、不同系统可能会不同。
  • 6、所有非0的值都是真值
  • 7、单目运算符高于双目运算符

运算符表

运算符

术语

示例

结果

+

正号

+3

3

-

负号

-3

-3

+

10 + 5

15

-

10 - 5

5

*

10 * 5

50

/

10 / 5

2

%

取模(取余)

10 % 3

1

++

前自增

a=2; b=++a;

a=3; b=3;

++

后自增

a=2; b=a++;

a=3; b=2;

--

前自减

a=2; b=--a;

a=1; b=1;

--

后自减

a=2; b=a--;

a=1; b=2;

赋值运算符

赋值运算符表

运算符

术语

示例

结果

=

赋值

a=2; b=3;

a=2; b=3;

+=

加等于

a=0; a+=2;

a=2;

-=

减等于

a=5; a-=3;

a=2;

*=

乘等于

a=2; a*=2;

a=4;

/=

除等于

a=4; a/=2;

a=2;

%=

模等于

a=3; a%2;

a=1;

案例

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h> int main(void)
{
int a = ;
// 赋值简单写法、a = a + 5; 相同。
a += ;
// 取模赋值简单写法、a=a % 5;
a %= ;
// 赋值简单写法、a = a * 5; 相同。
a *= ;
// 取模赋值简单写法、a=a / 5;
a /= ;
printf("%d\n", a);
return ;
}

赋值运算符 使用案例

比较运算符

比较运算符表

C 语言的比较运算中, “真”用数字“1”来表示, “假”用数字“0”来表示。

运算符

术语

示例

结果

==

相等于

4 == 3

0

!=

不等于

4 != 3

1

<

小于

4 < 3

0

>

大于

4 > 3

1

<=

小于等于

4 <= 3

0

>=

大于等于

4 >= 1

1

案例

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h> int main(void)
{
// 比较计算真假值
int a = ;
int b = ;
int c = ;
// 假:0
printf("%d\n", a == b);
// 真:1
printf("%d\n", a != b);
// 假:0
printf("%d\n", a >= b);
// 以此类推....
printf("%d\n", a <= b);
printf("%d\n", a = b);
printf("%d\n", a < b);
printf("%d\n", a > b); // 运用其他公式、c为1真值
printf("%d\n", c = ++a <= b * );
return ;
}

比较运算符 使用案例

逻辑运算符

逻辑运算符表

运算符

术语

示例

结果

!

!a

如果a为假,则!a为真;

如果a为真,则!a为假。

&&

a && b

如果a和b都为真,则结果为真,否则为假。

||

a || b

如果a和b有一个为真,则结果为真,二者都为假时,结果为假。

案例

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h> int main(void)
{
int a = ;
int b = ; // !非:假0、非真为假,非假为真
printf("%d\n",!a);
// 真1
printf("%d\n", !!a);
// &&与:真1、同真为真,其余为假
printf("%d\n", a && b);
// 假0:!a为单目运算符,高于双目运算符(前后都有表达式)
printf("%d\n", !a && b);
// ||或:表达式、同假为假,其余为真
printf("%d\n", a || b);
// 运算符:优先级
int c = a++ + b || c-- * c && !b + ++c; return ;
}

逻辑运算符 使用案例

最新文章

  1. iOS开发点滴:iPhone屏幕适配
  2. iOS-数据持久化-对象归档
  3. 表单提交set集合问题
  4. linux网络bond技术
  5. 简易nagios安装出现的问题及解决方法
  6. centos 减少tty数量的方法
  7. MATLAB三维散点图的绘制(scatter3、plot3)
  8. XSS漏洞解决方案之一:过滤器
  9. Visual Prolog 的 Web 专家系统 (8)
  10. log4j的配置信息(转)
  11. Android开发(30)--AutoCompleteTextView和MultiAutoCompleteTextView自动提示输入内容
  12. svn服务器的搭建与使用一
  13. ETL实践--kettle转到hive
  14. 【一天一道LeetCode】#120. Triangle
  15. CMDB服务器管理系统【s5day90】:API构造可插拔式插件逻辑
  16. makefile中打印变量名字,方便调试
  17. java面试题汇总(有的题无视即可,没什么实际用途)
  18. 【NIO】之IO和NIO的区别
  19. MySQL大数据表水平分区优化的详细步骤
  20. uva-705-深搜

热门文章

  1. [C语言学习笔记二] extern 函数的用法
  2. Linux下安装Oracle后重启无法登录数据库ORA-01034:ORACLE not available
  3. Fedora 安装及配置
  4. python 函数(实参与形参、传递参数)
  5. [terminal]终端仿真程序
  6. CentOS8 上安装Docker
  7. Linux7种运行模式
  8. WampServer 更换 mysql
  9. Nginx总结(八)Nginx服务器的日志管理及配置
  10. 《Head first设计模式》之观察者模式