C语言笔记3——运算符和表达式
目录
一.表达式
二.运算符
一.表达式
表达式:由操作数和运算符组成的序列。操作数可以
优先级:各类运算符在一个表达式中运算的先后顺序。四项基本运算。
为“单目高于双目,双目高于三目,三目高于赋值”。
双目运算中的10个优先级的先后顺序可记忆为:“算术运算符高于移位运算符,移位运算符高于关系运算符,关系运算符高于逻辑运算符(不包括单目位逻辑运算符),位逻辑运算符高于逻辑运算符”
结合性:当一个运算量两侧的运算符优先级相同时运算的结合方向。
除单目运算符、赋值运算符和条件运算符是右结合性外,其他都是左结合性。
表达式求值
(1)先按运算符的优先级高低次序进行。例如:先乘除后加减
(2)如果在一个操作数两侧的运算符的优先级相同,则按C语言规定的结合方向(结合性) 进行。
二.运算符
运算符:表示某种运算功能的符号。
按操作功能运算符分:
1.算术运算符 + - * / % ++ --
2.关系运算符 >< == >= <= !=
3.逻辑运算符 !&& ||
4.位运算符 << >> ~ | ^ &
5.赋值运算符 =及其扩展赋值运算符
6.条件运算符 ?:
7.逗号运算符 ,
8.指针运算符 * &
9.求字节数运算符 sizeof
10.强制类型转换运算符 (类型)
11.成员运算符 .->
12.下标运算符 【】
13.其他 如函数调用运算符()
运算符:单目运算符 取负运算符( -)
双目运算符 算术运算符(+)
三目运算符 条件运算符(?:)
1.算术运算符注:%对象、结果为整 优先级:() → * 、/、% → +、- 结合性:从左至右 算术表达式:算术运算符和括号将运算量连接起来的式子。
运算符 含义 举例 结果 * 乘法运算符 a*b a和b的乘积 / 除法运算符 a/b a除以b的商 % 求余运算符 a%b a除以b的余数 + 加法运算符 a+b a和b的和 - 减法运算符 a-b a和b的差
(1)关于除法的运算
1/2=0,但1.0/2=0.5 【类型不同的数进行运算,其结果按类型优先级高的类型定】
(2)关于求余数的运算
#include<stdio.h> int main() {printf("%d\n",5%3);printf("%d\n",5%-3);printf("%d\n",-5%3);printf("%d\n",-5%-3);return 0; }
答:2、2、-2、-2 结果与前符号一致
2.关系运算符
运算符 含义 举例 结果 > 大于 3>5 0 < 小于 3<5 1
<= 小于等于 3<=5 1
>= 大于等于 3>=5 0 == 等于 3==5 0 != 不等于 3!=5 1 注:当比较结果成立时,结果为1;当比较结果不成立时,结果为0
.关系表达式:用关系运算符连接大的两个表达式构成。关系运算符实际上就是比较运算符
优先级:(<,<=,>=,>)高于(==,!=)
结合性:自左向右
算术运算符优先级高于关系运算符
3+(4<3)*4 值为:3 3+4<3*4 值为:1
3.逻辑运算符
运算符 含义 举例 结果 ! 逻辑“非” !3 0 && 逻辑“与” 3&&0 0 || 逻辑“或” 3||0 -1 注:
- C语言中结果数值1为真,0为假
- 数学上的区间:2≤X≤8,在C语言中必须写成2<=X && X<=8,
- 如果&&的左侧为假,则C语言不会判断右侧。同理,如果||左侧为真,C语言不会判断右侧的真假
.逻辑表达式:用逻辑运算符连接两个表达式构成
优先级:!>&&>||
结合性:自左向右;
4.位运算(二进制)
运算符 含义 举例 结果 & 按位与 3&5 1
| 按位或 3|5 7 ^ 按位异或 3^5 6 ~ 按位取反 ~3 -4 << 左移 3<<1 6 >> 右移 3>>1 1 注:异或运算规则:相异为真,相同为假
左移运算规则:左移时,最高位舍n位,最低位补n位,无补0
右移运算规则:右移时,最低位舍n位,最高位补位根据运算量的类型决定(如果运算量是一个有符号整数则补齐号位,如果是无符号的整数则最高位补0)
5.赋值运算符
赋值运算符:“=”
公式:【变量】=【表达式】
优先级:!>算术>关系>&&和||>赋值
结合性:自右至左
6.条件运算符
条件运算符:?:
作用:判断一个逻辑表达式的结果,如果为真则指定执行某个表达式,如果位假则指定执行 另外的表达式。条件表达式的实质就是起程序控制作用
公式:表达式1?表达式2:表达式3
求值规则:先求解表达式1的值,若为真(非0),求解表达式2,并把表达式2的值作为整个 条件表达式的值;若表达式1的值为假(0),求解表达式3,并把表达式3的值作 为整个条件表达式的值
7.逗号运算符
逗号运算符:,
作用:将几个表达式隔开并以此计算
公式:【表达式】,【表达式2】,...【表达式n】
注:依次计算,最后一个表达式是整个逗号表达式的值
发布评论