当前位置:
文档之家› C语言课件(运算符和表达式)
C语言课件(运算符和表达式)
三目运算符(三元运算符)
需要3个操作数。(唯一:条件运算符 ? :)
运算符和表达式
运算符的优先级和结合性
运算符的优先级
某些运算符先于其他运算符被执行。
例如,x + y * 4,先乘除后加减。
必要时可以用圆括号()改变计算顺序。
例如,求三个数的平均值。 错误的写法:a + b + c / 3 正确的写法:(a + b + c ) / 3
举例
a+=5 x*=y+7 x+=x-=x*=x a=a+5
≡
x=x*(y+7) x=x+(x=x-(x=x*x))
运算符和表达式
逗号运算符
逗号运算符:,
优先级:15。 结合性:从左往右。
逗号表达式
<表达式1>, <表达式2>, …, <表达式n> x=1, (a=b+1), i++ 求解过程:先求表达式1的值,再求表达式2的值,· · · ,直 至求出表达式n的值。 表达式的值为表达式n的值。
– 利用除法、取模等运算。
顺序输出变量c1、c2、c3和c4中的字符。
运算符和表达式
引例
引例
源程序(cw04-01.c)
#include <stdio.h>
请输入一个四位的正整数: 1234
void main() { unsigned number; char c1, c2, c3, c4; printf("请输入一个四位的正整数:"); scanf("%u", &number);
运算符和表达式
位运算
位左移<<,位右移>>,位与&,位或|,位异或^ 位运算按二进制数运算法则进行计算 将另立பைடு நூலகம்题讲解运算规则
运算符和表达式 运算符和表达式
赋值运算
赋值运算符
简单赋值运算符:= 复合赋值运算符:+=,-=,*=,/=,%= 优先级:14 结合性:从右往左
赋值表达式
<变量> <赋值运算符> <表达式> d = 23 作用:将表达式的值赋给变量。 赋值表达式的值就是被赋值的变量的值。
printf("%d\n", -i++); printf("i=%d\n", i);
}
7 7 7 7 -6
i = ?
运算符和表达式
关系运算
关系运算(比较运算)
比较两个值,结果为“真”或“假”。 举例:a>3
如果a=8,则结果为“真” 如果a=1,则结果为“假”
用关系运算进行条件判断
关系表达式表示一个条件,根据其结果判断条件是否满足。 举例:a>3
x>=1&&x<=10&&x!=7
例2:y能被4整除,但不能被100整除
(y%4==0)&&(y%100!=0)
逻辑与和逻辑或具有短路能力
例1:gender==‘F’&&age>=65
如果gender不等于’F’,整个表达式的值就是假,求值过程结束。
例2:average>=90||finalExam>=90
a>b m+n<=20 c!=„y‟ (x>z)==(y>z)
运算符和表达式
关系表达式
关系表达式的值是一个逻辑值:“真”或“假”
C语言没有逻辑类型,因此
用整数 1 表示“真” 用整数 0 表示“假”
即关系表达式的值是整数 1 或 0 。 举例
若a=1,b=2,c=3
a>b a+b<=c (a>c)==(b>c) „Y‟!=„y‟
运算符和表达式 运算符和表达式
自增和自减运算符
自增和自减运算符
自增运算符:++
将操作数的值增一。
自减运算符:- 将操作数的值减一。
操作数必须是整型和字符型变量。 单目运算符。 优先级:2。 结合性:从右往左。
运算符和表达式
算术运算符(特殊问题)
除号运算符的使用问题
当除号前后操作数全为整型数(包括char、int、long)时, 除号为整除运算。 当有任一操作数为实型数时则为普通除法运算。
(x<-10)||(x>0)
逻辑运算符
!(逻辑非) &&(逻辑与) ||(逻辑或)
运算符和表达式
逻辑表达式
逻辑表达式
[<表达式1>] <逻辑运算符> <表达式2> 表达式1和表达式2可以是任何表达式。 举例
(x>5)||(x<-5) !(a<b)&&(m!=n) (a+b>c)&&(a+c>b)&&(b+c>a)
运算符和表达式 运算符和表达式
简单赋值运算
简单赋值运算符:= 举例
c=a+b a=b=c=d=10 a=(a+b)
a=(b=(c=(d=10)))
a=5, b=8, x=a+b
x=(a=5)+(b=8)
类型转换
如果赋值运算符右边表达式的类型与左边变量的类型不一 致,则把右边表达式值的类型按左边变量的类型进行转换, 然后再赋值。 例如,int n = 3.6; n的值为3。
运算符与表达式
运算符和表达式
第二讲 运算符和表达式
引例 概念及分类 优先级和结合性 算术运算 关系运算 逻辑运算 位运算 赋值运算符 逗号运算符 条件运算符
运算符和表达式
引例
引例
问题
输入一个四位的正整数,反序输出该四位数的四个数字字符。
设计
用一个无符号整型变量number保存输入的四位正整数。 依次分解出个位数字、十位数字、百位数字和千位数字,并分别放 到字符变量c1、c2、c3和c4中。 怎么分解?
+ * / %
- b
f + 7 p – c bm x / y r mod s
- b
f + 7 p – c b * m x / y r % s
整数、字符、浮点数
整数、字符、浮点数 整数、字符、浮点数 整数、字符、浮点数 整数、字符、浮点数 整数、字符
说明
取模运算(%),结果是两个整数相除的余数。 例如,7%5 = 2,-2%3 = -2。
运算符的结合性
当出现并列的运算优先级别相同的运算符时,由运算符的 结合性决定计算的次序。
例如,x * y / z
运算符和表达式 运算符和表达式
算术运算符
常用的算术运算及运算符
运算符名称 正号 算术运算符 + 代数表达式 + a C语言表达式 + a 适用的数据类型 整数、字符、浮点数
负号
加 减 乘 除 取模
4321
c1 c2 c3 c4
= = = =
number%10 + '0'; number/10%10 + '0'; number/100%10 + '0'; number/1000 + '0';
//得到个位数字 //得到十位数字 //得到百位数字 //得到千位数字
printf("\n%c%c%c%c\n", c1, c2, c3, c4); }
0 1 1 1
运算符和表达式
关系表达式的使用
举例:写出下面各条件的关系表达式
x为不小于 -5 的整数 x为非零的数 x的平方大于m与n的和
x>=-5 x!=0 x*x>(m+n)
运算符和表达式
关系运算的不足
关系表达式只能表达一些简单的条件
grade>=60 total>1000
每个判断只是对一个条件进行测试。 如果要对多个条件进行测试就要在独立的语句或嵌套的if或 if-else结构中进行测试。 例1:10>y>5
运算符和表达式
条件运算符
条件运算符:? :
三目运算符 右结合 条件表达式 <表达式1>?<表达式2>:<表达式3> 举例
c=a>b?a:b;
printf(“%s”,(grade>=60)? “Passed”:“Failed”);
(grade>=60)?printf(“Passed”):printf(“Failed”);
逻辑表达式的值
1:真 0:假
整数
运算符和表达式
逻辑运算
逻辑运算真值表
a !a
1
0
0
1
a 1 1 0 0
b 1 0 1 0
a&&b 1 0 0 0 a 1 1 0 0 b 1 0 1 0 a||b 1 1 1 0
!
&&
||
运算符和表达式
逻辑表达式的使用
将下面的条件用C语言的逻辑表达式表示
例1:1≤x≤10且x≠7
如果average大于等于90,整个表达式的值就是真,求值过程结束。
运算符和表达式
程序设计举例
举例(cw0602.c)
问题:任意输入一个字符,判断它是字母还是数字。
#include <stdio.h> void main() { char c;
c=getchar();