第二章C语言运算符得使用和优先级
你好!我是小柒,今天我们大家一起学习C语言运算符的使用和优先级
本节内容:
1、算术运算符
2、赋值运算符、关系运算符、条件运算符、复合运算符
3、逻辑运算符
小柒提示:进入正文啦!
一、算术运算符
+、-、*、/、%、++、- -
int a = 10,b = 10;
printf("%d"a+b);
printf("%d"a-b);
printf("%d"a*b);
printf("%d"a/b);
printf("%d"a%b);
小柒提示:
- 除号右边的数字不能为0。
- 取余运算符两边必须都是整数
-----------------------------------------------------------------
int a = 20,b = 10;
int c;
c = b%a;
//++在前
printf("c++ = %d\n",c++);
printf("c = %d\n",c);
打印结果:c++ = 10
打印结果:c = 11
//++在后
printf("c = %d\n",c);
printf("c = %d\n",c++);
printf("c = %d\n",c);
打印结果:c = 10
打印结果:c++ = 10
打印结果:c = 11
小柒提示:++,--在前和在后最终结果都一样。但是过程不一样。
- ++、- -在前,先执行++或- -;
- ++、- -在后,后执行++或- -;
二、赋值运算符、关系运算符、条件运算符、复合运算
1)赋值运算符
小柒什么是赋值运算符?
答:用于给变量赋值, 将等号右边的值赋给等号左边的变量
- int a ,b = 10;
- printf("a = %d\n",a);//打印a
- a = b;//把b的值传给了a
- printf("a = %d\n",a);//打印a和b
- 打印结果:
- a =0
- a = 10
小柒提示,赋值运算符的优先级略低
2)关系运算符
- > >= < <=
- == !=
关系运算符的值为假时,结果值都为0
int a = 10,b = 20;
printf("%d",a > b);
打印:0
int a = 10,b = 20;
printf("%d",b == a);
打印:0
-----------------------------------------------------------------
关系运算符的值为真时,结果值都为1
int a = 10,b = 20;
printf("%d",b > a);
打印:1
int a = 10,b = 20;
printf("%d",b != a);
打印:1
小柒提示: =和==是不同,(一个=是赋值方法)(两个==是相等)
优先级,关系运算符对内,前4种关系运算符的优先级别相同,后两种也相同。前四种高于后两种。
对外,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符。
-----------------------------------------------------------------
C语言提供6种关系运算符,如表所示:
运算符
|
名称
|
示例
|
功能
|
缩写
|
<
|
小于
|
a<b
|
a小于b时返回真;否则返回假
|
LT
|
<=
|
a<=b
|
a小于等于b时返回真;否则返回假
|
LE
|
|
>
|
大于
|
a>b
|
a大于b时返回真;否则返回假
|
GT
|
>=
|
a>=b
|
a大于等于b时返回真;否则返回假
|
GE
|
|
==
|
等于
|
a==b
|
a等于b时返回真;否则返回假
|
EQ
|
!=
|
不等于
|
a!=b
|
a不等于b时返回真;否则返回假
|
NE
|
3)复合运算符
- 复合运算符:+=、-=、*=、/=、%=
- 例如:
- a += b; //等价于a = a + b;
- a %= b; //等价于a = a % b;
小柒提示,一定要记住哦!
4)条件运算符 ? :
用法:条件表达式1 ?真结果表达式2:假结果表达式3;
- 条件运算符 ? :
举例:int a = 3,b = 5;
a > b ? a : b;
-----------------------------------------------------------------
二、逻辑运算符
- &&(逻辑与):运算符两边同时为真的时候,整个逻辑表达式的结果为真3<5&&5>3真,3<5&&5<3假。
- | |(逻辑或):运算符两边同时为假的时候,整个逻辑表达式的结果为假5<3||3<5真,5<3||5<3假
- !(逻辑非):将表达式的结果取反;
- 例如:” !0" 这个逻辑表达式的值为1.(判断的这个数为0,成立,则其表达式的值为1);
- " !1" 这个逻辑表达式的值为0.(判断的这个数非0,不成立,则其表达式的值为0)
优先级,非!与&&或\\
小柒提示,注意逻辑与和逻辑或的短路现象。
-----------------------------------------------------------------
例一
int a = 3,b = 5;
a||b++;
printf(" a = %d\n",a);
printf("b = %d",b);
打印:a = 3
b = 5
-----------------------------------------------------------------
与或的短路现象
这部分很多学员都会掉坑里
b = ?
b = 5;因为a为真,整个或表达式已经为真了,所以系统并不会去处理b++
int a = 3,b = 5;
b++;
printf("b = %d",b);
打印:b = 6
因为a为真,整个或表达式已经为真了,所以系统并不会去处理b++
int a = 0, b = 1;
a&&++b;
b = ?
b = 1;a已经为假,整个与表达式已经为假,所以系统并不会去处理++b
- && || 操作时候才出现的
- 条件1&&条件2
- 前面条件为假时候,条件2的语句不执行,该逻辑为假
- 条件1||条件2
- 前面条件为真时候,条件2的语句不执行,该逻辑为真
C语言优先级表:
优先级
|
运算符
|
名称或含义
|
使用形式
|
结合方向
|
说明
|
1
|
[ ]
|
数组下标
|
数组名[整型表达式]
|
左到右
|
|
( )
|
圆括号
|
(表达式)/函数名(形参表)
|
|||
.
|
成员选择(对象)
|
对象.成员名
|
|||
->
|
成员选择(指针)
|
对象指针->成员名
|
|||
2
|
-
|
负号运算符
|
-表达式
|
右到左
|
单目运算符
|
(类型)
|
强制类型转换
|
(数据类型)表达式
|
|||
++
|
自增运算符
|
++变量名/变量名++
|
单目运算符
|
||
--
|
自减运算符
|
--变量名/变量名--
|
单目运算符
|
||
*
|
取值运算符
|
*指针表达式
|
单目运算符
|
||
&
|
取地址运算符
|
&左值表达式
|
单目运算符
|
||
!
|
逻辑非运算符
|
!表达式
|
单目运算符
|
||
~
|
按位取反运算符
|
~表达式
|
单目运算符
|
||
sizeof
|
长度运算符
|
sizeof 表达式/sizeof(类型)
|
|||
3
|
/
|
除
|
表达式/表达式
|
左到右
|
双目运算符
|
*
|
乘
|
表达式*表达式
|
双目运算符
|
||
%
|
余数(取模)
|
整型表达式%整型表达式
|
双目运算符
|
||
4
|
+
|
加
|
表达式+表达式
|
左到右
|
双目运算符
|
-
|
减
|
表达式-表达式
|
双目运算符
|
||
5
|
<<
|
左移
|
表达式<<表达式
|
左到右
|
双目运算符
|
>>
|
右移
|
表达式>>表达式
|
双目运算符
|
||
6
|
>
|
大于
|
表达式>表达式
|
左到右
|
双目运算符
|
>=
|
大于等于
|
表达式>=表达式
|
双目运算符
|
||
<
|
小于
|
表达式<表达式
|
双目运算符
|
||
<=
|
小于等于
|
表达式<=表达式
|
双目运算符
|
||
7
|
==
|
等于
|
表达式==表达式
|
左到右
|
双目运算符
|
!=
|
不等于
|
表达式!= 表达式
|
双目运算符
|
||
8
|
&
|
按位与
|
整型表达式&整型表达式
|
左到右
|
双目运算符
|
9
|
^
|
按位异或
|
整型表达式^整型表达式
|
左到右
|
双目运算符
|
10
|
|
|
按位或
|
整型表达式|整型表达式
|
左到右
|
双目运算符
|
11
|
&&
|
逻辑与
|
表达式&&表达式
|
左到右
|
双目运算符
|
12
|
||
|
逻辑或
|
表达式||表达式
|
左到右
|
双目运算符
|
13
|
?:
|
条件运算符
|
表达式1? 表达式2: 表达式3
|
右到左
|
三目运算符
|
14
|
=
|
赋值运算符
|
变量=表达式
|
右到左
|
|
/=
|
除后赋值
|
变量/=表达式
|
|||
*=
|
乘后赋值
|
变量*=表达式
|
|||
%=
|
取模后赋值
|
变量%=表达式
|
|||
+=
|
加后赋值
|
变量+=表达式
|
|||
-=
|
减后赋值
|
变量-=表达式
|
|||
<<=
|
左移后赋值
|
变量<<=表达式
|
|||
>>=
|
右移后赋值
|
变量>>=表达式
|
|||
&=
|
按位与后赋值
|
变量&=表达式
|
|||
^=
|
按位异或后赋值
|
变量^=表达式
|
|||
|=
|
按位或后赋值
|
变量|=表达式
|
|||
15
|
,
|
逗号运算符
|
表达式,表达式,…
|
左到右
|
从左向右顺序运算
|
小柒今天累了,明天咱们一起来学习一下,scanf函数和分支结构 ,加油哦!