内容正文:
第三章 数据与运算
1
CONTENTS
目录
01
02
逻辑运算符与逻辑表达式
关系运算符与关系表达式
03
赋值运算符与赋值表达式
04
位运算符与表达式
05
其它运算符与表达式
06
数据类型的转换
知识树
My First Template
关系运算符与关系表达式
C语言程序设计
4
C语言
关系表达式的计算结果 = 逻辑值(真或假)
在C语言中,“0”表示“假”,“非0”表示“真”
关系运算符用于测试两个操作数或两个表达式之间的关系,其中操作数可以是变量、常量或表达式。
关系运算符
操作数
关系运算符
操作数
关系运算符与关系表达式
My First Template
C语言
关系运算符关系表达式
1. 关系运算符(又称比较运算符)
用于比较两个表达式值的大小,有6种:
> 、>= 、< 、<= 、= = 、!=
2. 关系表达式
• 是用关系运算符把两个表达式联系起来的式子
• 关系表达式成立,其值为真,用1代表;否则为假,
用0代表。
如 int a = 4, b = 8;
则 关系表达式 a > b 的值为0,
而 关系表达式 a < b 的值为1。
关系运算符与关系表达式
My First Template
C语言
运用关系表达式时的注意事项:
关系表达式中字符型数据按其ASCII码值参加比较运算
100 < 'a' 值为0 '3'>30值为1
运算符两边的表达式可以是算术、字符、赋值、关系、或逻辑表达式。
例:(a+x)>(b+y)
(x=4)<=y++
关系运算符运算时结合方向自左至右。
例: 若 a = 4, b = 3, c = 2 则:
x = ( a < b < c ) x的值为 1;
y = ( a > b > c ) y 的值为 0。
关系运算符与关系表达式
My First Template
C语言
关系运算符与关系表达式
num1=10; num2=5;num3=20;num4=10;
(num1 + num2) > (num3 – num4)
num=40;
num/10 != 2
gender = ‘m’
真
假
==
如果 gender = ‘f’
如果 gender = ‘m’
My First Template
逻辑运算符与逻辑表达式
C语言程序设计
9
C语言
逻辑运算符与逻辑表达式
1. 逻辑运算符
用于对逻辑量进行运算,有3种:
&& 逻辑与 双目运算符
|| 逻辑或 双目运算符
! 逻辑非 单目运算符
2. 逻辑表达式
• 是用逻辑运算符联系起来的表达式。如:
a && b; a || b; ! a ;
• 逻辑运算符两边是逻辑值。非0为真,0为假。
• 逻辑表达式的值也是逻辑值。真为 1,假为0。
逻辑运算符与逻辑表达式
My First Template
C语言
逻辑与运算:两个运算量都为非0,结果才为1 (逻辑真) 。
逻辑与的真值表
逻辑运算符与逻辑表达式
My First Template
C语言
逻辑或运算:两个运算量中只要有一个运算量非0,结果就为1(逻辑真)。
逻辑或的真值表
逻辑运算符与逻辑表达式
My First Template
C语言
逻辑非运算:使运算量的值变反,即非0值变0值。
X ! X
非0 0
0 1
逻辑非的真值表
逻辑运算符与逻辑表达式
My First Template
C语言
运用逻辑表达式的注意事项
判断数值是否为真时,非0代表真,0代表假
逻辑运算符两侧的操作数不仅可以是整数,也可以是其他数据类型,只要该类型
的数据值最终能得到0或非0值
逻辑表达式中,不一定对逻辑运算符两侧的表达式都求值 (&&、||)
数学上的数值区间不能直接用在C语言的判断条件上
如数学上的 1<x≤10,不应写成:1<x<=10;
而应写成:(1<x)&&(x<=10)
逻辑运算符与逻辑表达式
My First Template
C语言
例1:int x,y,z,w;
x=y=z=-1;
w=(++x||++y)&&++z;
printf ("%d,%d,%d,%d
",x,y,z,w);
输出为何?
&& 前的操作数值若是假,则后面的表达式无需运算
|| 前的操作数值若是真,则后面的表达式无需运算
答案:0, 0, -1, 0
逻辑运算符与逻辑表达式
My First Template
C语言
例2:逻辑表达式(!E) 的值等价于_____。
A) E = = 0 B) E != 1 C) E != 0 D)-E
! E E == 0 E != 1 E != 0 -E
E=0 1 1 1 0 0
E≠0 0 0 不定 1 不定
逻辑运算符与逻辑表达式
My First Template
C语言
例 : main ( )
{ int a,b,c = 241;
a = c/100%9;
b = ( -1)&&( -2);
printf ("%d, %d
", a, b);}
输出为何?
答案: 2, 1
2
1
逻辑运算符与逻辑表达式
My First Template
C语言
逻辑运算符与逻辑表达式
问题描述:
要求用户输入一个字符,用程序判断该字符是否为小写字母 ,并输出相应的信息。
#include <stdio.h>
void main()
{
char a;
printf("
请输入一个字符:");
scanf("%c",&a);
if(a>='a' && a<='z')
printf("您输入的字符是小写字母
",a);
else
printf("您输入的字符不是小写字母
",a);
}
内存
num
T
请输入一个字符:T
您输入的字符不是小写字母
实例1
My First Template
C语言
逻辑运算符与逻辑表达式
实例2
问题描述:
接受用户输入的三种商品的价格。如果购买的三种商品中至少有一种商品的价格大于 50 或者三种商品的总额大于 100,则折扣率为15%,否则折扣率为0,计算并显示用户应付的钱数。
#include <stdio.h>
void main()
{
float rate1,rate2,rate3;
double discount,total;
printf("
请输入第一种商品的价格:");
scanf("%f",&rate1);
printf("
请输入第二种商品的价格:");
scanf("%f",&rate2);
printf("
请输入第三种商品的价格:");
scanf("%f",&rate3);
total=rate1+rate2+rate3;
if((rate1>50)||(rate2>50)||(rate3>50)||(total>100))
{
discount=0.15*total;
total=total-discount;
printf("
折后总价为:%6.2f
",total);
}
else
printf("
总价为:%6.2f
",total);
}
if((rate1>50)||(rate2>50)||(rate3>50)||(total>100))
输出:
请输入第一种商品的价格:34
请输入第二种商品的价格:42
请输入第三种商品的价格:38
折后总价为:96.90
My First Template
C语言
逻辑运算符与逻辑表达式
实例3
问题描述:
确定用户输入的数字是否可以被5整除,并输出相应的消息。
#include <stdio.h>
void main()
{
int num;
printf("
请输入一个数:");
scanf("%d",&num);
if (!(num %5))
printf("
该数能被 5 整除
");
else
printf("
该数不能被 5 整除
");
}
请输入一个数:90
该数能被 5 整除
My First Template
x
y
x&&y
非0
非0
1
非0
0
0
0
非0
0
0
0
0
x
y
x||y
非0
非0
1
非0
0
1
0
非0
1
0
0
0
$$