【C语言】运算符大全(附运算符优先级表)
目录
一、常见运算符
1.算术运算符:+、-、*、/、%、++、--
2.关系运算符:>、>=、<、<=、==、!=
3.逻辑运算符:&&、||、!(单目)
4.位运算符:&、|、^、~(单目)、<<、>>
5.(复合)赋值运算符:=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
二、特殊运算符
1.sizeof运算符:sizeof(表达式)
2.三目/条件运算符:(表达式1)?表达式2:表达式3
3.逗号运算符:表达式1,表达式2,……
4.下标运算符:[]
5.取地址运算符:&
6.地址引用运算符:*
7.结构体/共用体成员访问运算符: .
8.结构体/共用体指针成员访问运算符:->
9.小括号运算符:(表达式)、函数名(形参表)
10.强制类型转换运算符:(数据类型)表达式
三、总结
一、常见运算符
1.算术运算符:+、-、*、/、%、++、--
加、减、乘运算符:+、-、*与一般的运算一致(附案例代码)
#include<stdio.h>
int main()
{int a=3;int b=4;int c=0;c=a+b;//加号运算 printf("a+b=%d\n",c);c=a-b;//减号运算 printf("a-b=%d\n",c);c=a*b;//乘号运算 printf("a*b=%d\n",c);return 0;
}
除号运算符:/
分母不能为0;分母为0,会报语法错误,也可能程序会直接崩溃!!!
相除结果只能保留整数部分;例如结果为3.3,实际保留结果为3
#include<stdio.h>
int main()
{int a=10;int b=3;int c=0;c=a/b;//除号运算,只能保留结果得整数部分;被除数b不能为0 printf("a/b=%d\n",c);return 0;
}
取余运算符:%
结果为余数;取余运算的结果为两者相除的余数
浮点型数据不适用;取余操作只能对整数类型操作
#include<stdio.h>int main()
{int a=10;int b=3;int c=0;c=a%b;//取余运算,结果为两者相除的余数 printf("a/b=%d\n",c);return 0;
}
自增、自减运算符:++、--
2.关系运算符:>、>=、<、<=、==、!=
六种关系运算符只在写法上与平常见到有所不同,作用是相同的,直接上代码感受就行。
#include<stdio.h>
int main()
{int a=10;int b=5;//可以改变a和b的值进行关系运算符的验证if(a>b)printf("a>b\n");if(a>=b)printf("a>=b\n");if(a<b)printf("a<b\n");if(a<=b)printf("a<=b\n");if(a==b)printf("a==b\n");if(a!=b)printf("a!=b\n");return 0;
}
3.逻辑运算符:&&、||、!(单目)
&&:(表达式1)&&(表达式2)
表达式1和表达式2都为真,则为逻辑真
表达式1和表达式2有一个为假,或者全部为假,则为逻辑假
注意:当表达式1为假时,表达式2不再执行判断(表达式2语句不执行)。
#include<stdio.h>
int main()
{int a=10;int b=3;if((a<b)&&(b=a+b))//(a<b)为假,b=a+b不再执行 {printf("hello zaizai!\n");}printf("a=%d,b=%d\n",a,b);if((a>b)&&(b=a+b))//(a>b)为真,b=a+b执行 {printf("hello zaizai\n");}printf("a=%d,b=%d\n",a,b);return 0;
}
||:(表达式1)||(表达式2)
表达式1和表达式2有一个为真,则为逻辑真
表达式1和表达式2全为假,则为逻辑假
注意:当表达式1为真时,表达式2不再执行判断(表达式2语句不执行)。
#include<stdio.h>
int main()
{int a=10;int b=3;if((a<b)||(b=a+b))//(a<b)为假,b=a+b执行 {printf("hello zaizai!\n");}printf("a=%d,b=%d\n",a,b);if((a)||(b=a+b))//(a)为真,b=a+b不再执行 {printf("hello zaizai\n");}printf("a=%d,b=%d\n",a,b);return 0;
}
!:!(表达式)
非逻辑运算符是单目运算符;
取表达式的逻辑反;
#include<stdio.h>
int main()
{int a=10;int b=3;if(!(a==b))//a==b为逻辑假,取非则为逻辑真 {printf("hello zaizai!\n");}return 0;
}
4.位运算符:&、|、^、~(单目)、<<、>>
位运算操作的都是存储在计算机中的二进制数据(移位运算可以参考我的有关移位的博客)
&:按位与
|:按位或
^:按位异或
~:按位取反
<<:按位左移
>>:按位右移
5.(复合)赋值运算符:=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
赋值运算符:=
单个等号(=)在c语言中是赋值运算;
算术运算符复合赋值:+=、-=、*=、/=、%=
位运算符复合赋值:&=、|=、^=、<<=、>>=
二、特殊运算符
1.sizeof运算符:sizeof(表达式)
2.三目/条件运算符:(表达式1)?表达式2:表达式3
3.逗号运算符:表达式1,表达式2,……
4.下标运算符:[]
5.取地址运算符:&
6.地址引用运算符:*
7.结构体/共用体成员访问运算符: .
8.结构体/共用体指针成员访问运算符:->
9.小括号运算符:(表达式)、函数名(形参表)
10.强制类型转换运算符:(数据类型)表达式
三、总结
运算符虽然不少,而且还有优先级之分,但是多练习熟悉就好了,实践出真知!
附录:运算符优先级表
优先级 |
运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 |
1 |
[] |
数组下标 | 数组名[长度] |
从左往右 |
|
() | 小括号 |
(表达式)或 函数名(形参表) |
|||
. | 取成员 | 结构体名.成员 | |||
-> | 指针 | 结构体指针->成员 | |||
2 |
- | 负号运算符 | -表达式 |
从右往左 |
单目运算符 |
() | 强制类型转换 | (数据类型)表达式 | |||
++ | 自增运算符 | ++变量或变量++ | 单目运算符 | ||
-- | 自减运算符 | --变量或变量-- | 单目运算符 | ||
* | 取内容 | *指针变量 | 单目运算符 | ||
& | 取地址 | &变量名 | 单目运算符 | ||
! | 逻辑非 | !表达式 | 单目运算符 | ||
~ | 按位取反 | ~整型表达式 | 单目运算符 | ||
sizeof | 求长度 | sizeof(表达式) | 单目运算符 | ||
3 |
/ | 除 | 表达式 / 表达式 |
从左往右 |
双目运算符 |
* | 乘 | 表达式 * 表达式 | 双目运算符 | ||
% | 取余 | 表达式 / 表达式 | 双目运算符 | ||
4 |
+ | 加 | 表达式+表达式 |
从左往右 |
双目运算符 |
- | 减 | 表达式-表达式 | 双目运算符 | ||
5 |
<< | 左移 | 变量<<表达式 |
从左往右 |
双目运算符 |
>> | 右移 | 变量<<表达式 | 双目运算符 | ||
6 |
> | 大于 | 表达式>表达式 |
从左往右 |
双目运算符 |
>= | 大于或等于 | 表达式>=表达式 | 双目运算符 | ||
< | 小于 | 表达式<表达式 | 双目运算符 | ||
<= | 小于或等于 | 表达式<=表达式 | 双目运算符 | ||
7 |
== | 等于 | 表达式==表达式 |
从左往右 |
双目运算符 |
!= | 不等于 | 表达式!=表达式 | 双目运算符 | ||
8 | & | 按位与 | 表达式&表达式 | 从左往右 | 双目运算符 |
9 | ^ | 按位异或 | 表达式^表达式 | 从左往右 | 双目运算符 |
10 | | | 按位或 | 表达式|表达式 | 从左往右 | 双目运算符 |
11 | && | 逻辑与 | 表达式&&表达式 | 从左往右 | 双目运算符 |
12 | || | 逻辑或 | 表达式||表达式 | 从左往右 | 双目运算符 |
13 |
?: | 条件运算符 | 表达式1? 表达式2: 表达式3 |
从右往左 |
三目运算符 |
14 |
= | 赋值运算符 | 变量=表达式 |
从右往左 |
双目运算符 |
/= | 除后再赋值 | 变量/=表达式 | |||
*= | 乘后再赋值 | 变量*=表达式 | |||
%= | 取余后再赋值 | 变量%=表达式 | |||
+= | 加后再赋值 | 变量+=表达式 | |||
-= | 减后再赋值 | 变量-=表达式 | |||
<<= | 左移再赋值 | 变量<<=表达式 | |||
>>= | 右移再赋值 | 变量>>=表达式 | |||
&= | 按位与再赋值 | 变量&=表达式 | |||
^= | 按位异或再赋值 | 变量^=表达式 | |||
|= | 按位或再赋值 | 变量|=表达式 | |||
15 | , | 逗号表达式 | 表达式,表达式,… | 从左往右 |
【C语言】运算符大全(附运算符优先级表)相关推荐
- C语言的本质(7)——C语言运算符大全
C语言的本质(7)--C语言运算符大全 C语言的结合方向 C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左).例如算术运算符的结合性是自左至右,即先左后右.如有表达式 x- ...
- 【C语言运算符大全】快速学会C语言运算符
目 录(本篇字数:2120) 介绍 运算符分类 算术运算符 逻辑运算符 关系运算符 位运算符 赋值运算符 经典问题:a = 5,b = 8,如何交换两个变量的值? 介绍 说到运算符,从小我们就学 ...
- c语言优先级大全,C语言运算符及其优先级汇总表口诀
C语言运算符及其优先级汇总表口诀 C语言运算符及其优先级汇总表口诀 圆下箭头一顿号 非凡增减富强针地长 三乘除,四加减,五移位 千万别把鱼忘记,它在盛饭的厨子里 小灯大灯灯灯不等 爸喂鱼,舅疑惑,裸鸡 ...
- c语言左值中有运算符,C语言左值,运算符的优先级以及结合性探讨
刚刚开始看一本书.<C陷阱与缺陷>,相信学习C语言的大家都对这本书有耳闻.今天看到了里面的贪心法则.也即在读到一个字符后,尽可能多的读入更多的字符,直到读入的字符组成的字符串已经不可能再组 ...
- %3c- r语言运算符,R语言基础教程之运算符
原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...
- c++运算符优先级_C语言入门教程-(6)运算符
1.运算符概述 运算符是一种编译器执行特定的数学或逻辑操作的符号.C语言提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 其他运算符 2.算术运算符 算术 ...
- C语言中的位运算符主要有哪些?逻辑右移与算术右移的区别?
逻辑右移与算术右移的区别? 逻辑右移就是不考虑符号位,右移一位,左边补零即可. 算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,:否则,就补0. 所以算术右移也可以进行有符号位的除法,右 ...
- Java/C语言/C++/Python/PHP运算符优先级
Java 运算符优先级 运算符 优先级 postfix expr++ expr-- unary ++expr --expr +expr -expr ~ ! multiplicative * / % a ...
- c语言运算符类型转换,C语言中强制类型转换运算符的独特作用
C语言中强制类型转换运算符的独特作用 在C语言中有一个强制类型转换运算符,它为C语言中的数据类型转换带来 (本文共2页) 阅读全文>> 在进行C++类的设计时,我们常常需要为类对象设计运算 ...
最新文章
- eeglab教程系列(17)-DIPFIT对独立成分进行等价偶极子定位
- 命令行选项“/source-charset”与预编译头不一致
- 基类数组存放派生类_永远不要将派生类数组赋值给基类类型指针
- python爬虫爬取豆瓣电影
- 解除天翼young和沃派客户端数量限制的方法
- shell(30) : 批量修改文件后缀
- jQuery MiniUI, 企业级Web开发
- android 6.0 usb网卡,Android安卓6.0使用技巧:让手机化身网卡和声卡
- c语言作业ppt模板,c语言演讲模板ppt
- [Azure - VNet] Azure网络带宽的性能测试
- 路由器关闭DHCP之后连接不到路由器设置界面?
- 介绍中国传统节日的网页html,中国传统节日大全表 中国16个传统节日介绍
- 债券价格和到期收益率的关系_什么是到期收益率 到期收益率与债券价格的关系...
- oracle数据透明加密,使用ORACLE 透明数据加密 TDE
- 038--想和权证恋个爱
- 全新版大学英语综合教程第一册学习笔记(原文及全文翻译)——7 - Kids On The Track(生死时刻)
- 大学生英语跨文化交际阅读课程 Unit6 Text A
- linux 运行安卓游戏吗,桌面应用|在 Linux 上安装安卓 8.1 Oreo 来运行应用程序和游戏...
- ST-Link资料02_ST-Link固件介绍,及固件命名规则
- 26进制(A到Z表示1到26,例27:AA,2019:BYQ)