C语言从入门到精通学习第5天(基本的运算符表达式及运算的优先级)
运算符和表达式的概念
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号,有下列几种运算符:
- 算术运算符:用于处理四则运算
- 赋值运算符:用于将表达式的值赋值分变量
- 关系运算符:用于表达式的比较,并返回一个真值或假值
- 逻辑运算符:用于根据表达式的值返回真值或假值
- 位运算符:用于处理数据的位运算
- 逗号运算符:把多个表达式用逗号联接起来(或者说,把这些表达式用逗号分开),构成一个更大的表达式
- 条件运算符:第一个表达式作真/假检测,然后根据结果返回两个表达式当中的一个
- sizeof运算符:用于求字节数长度
- 指针运算符(&,*):&取地址运算符,* 间接运算符
- 点运算符(.):点运算符.的左边操作数是一个结果为
结构体的表达式
- 箭头(->)运算符:箭头运算符->的左边操作数是一个
指向结构体的指针
- []下标运算符:通过下标访问数组中的元素
表达式就是通过运算符将运算对象(操作数)连接起来的式子,就叫表达式,例如:a+b、x = b+2、x++
运算符也叫操作符,根据运算符操作的运算对象的个数可以将运算符分为以下几种:
- 单目运算符:只需要一个操作数
- 双目运算符:需要两个操作数
- 三目运算符:需要三个操作数
算术运算符
运算符 | 术语 | 结合性 | 示例 | 结果 |
---|---|---|---|---|
+ | 加 | 从左至右 | 10+ 5 | 15 |
- | 减 | 从左至右 | 10- 5 | 5 |
* | 乘 | 从左至右 | 10 * 5 | 50 |
/ | 除 | 从左至右 | 10 / 5 | 2 |
% | 取模(取余) | 从左至右 | 10 % 3 | 1 |
++a | 前自增 | 右结合 | a=2; | b=++a; |
a++ | 后自增 | 左结合 | a=2; | b=a++; |
--a | 前自减 | 右结合 | a=2; | b=--a; |
a-- | 后自减 | 左结合 | a=2; | b=a--; |
提示: %取模运算符的两个操作数只能为整数,前自增/前自减都是先计算后引用,后自增/后自减先引用后计算。
赋值运算符
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
= | 赋值 | 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; |
提示:
- ‘=’不是相等的意思,而是赋值。
- 赋值表达式语句的目的是把值存储到内存上,用于存储值得数据存储区域统称为对象。
- 左值指用于标识一个特定的数据对象的名字或表达式,称为变量。它具有两个特点:1)可修改性。2)是数据对象的标识符,应具有标识符的特性。3)左值不能为常量。
- 右值指的是能赋给可修改得左值的量。
关系运算符
关系运算符用于比较两个数值中间的关系,所以也称为比较运算符。
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
== | 相等于 | 4 == 3 | 0 |
!= | 不等于 | 4 != 3 | 1 |
< | 小于 | 4 < 3 | 0 |
> | 大于 | 4 > 3 | 1 |
<= | 小于等于 | 4 <= 3 | 0 |
>= | 大于等于 | 4 >= 1 | 1 |
提示: 0表示假,1表示真。注意赋值运算符‘=’和关系运算符“==”的区别,条件判断式中用“==”。
逻辑运算符
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
! | 非 | !a | 如果a为假,则!a为真;如果a为真,则!a为假。 |
&& | 与 | a && | b 如果a和b都为真,则结果为真,否则为假。 |
|| | 或 | a || b | 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。 |
计算机通过两个逻辑来表示两个数值之间的关系:
- 逻辑真(关系成立):非0
- 逻辑假(关系不成立):0
在调试程序时,C语言为了形象地表达某两个值之间的关系,就用计算机中最简单的两个值0和1来描述,如果你在调试程序时输出结果为0,则表示你所判断的关系是不成立的,反之则表示成立!
注意: 1 是“真”,但是“真”不是1
逗号运算符
逗号运算符将两个表达式连接起来
表达式1, 表达式2
逗号运算符的结合性是“从左至右”:先计算表达式1,后计算表达式2
6)条件运算符
条件运算符是通过?
和冒号:
连接的表达式
表达式1 ?表达式2 : 表达式3
表示如果表达式1的结果为真,则整个表达式的结果为表达式2的结果,否则为表达3的结果。例如:2>3?True:False
运算符的优先级
! > 算术运算符 > 关系运算符 > && > || > 条件运算符 > 赋值运算符 > 逗号运算符