联系运算符,相同咱们也并不生疏。单片机C言语中有六种联系运算符,这些东西相同是在咱们小时分学算术时就现已学习过了的:
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 等于
或许你是个非 C言语 程序员,那么对前四个一定是再了解不过的了。而“==”在 VB 或 PASCAL 等中是用“=”,“!=”则是用“not ”。
小学时的数学课就教授过运算符是有优先级其他,计算机的言语也不过是人类言语的一种扩展,这儿的运算符相同有着优先等级。前四个具有相同的优先级,后两个也具有相同的优先级,可是前四个的优先级要高于后2个的。
当两个表达式用联系运算符衔接起来时,这个时分便是联系表达式。联系表达式通常是用来判别某个条件是否满意。要注意的是用联系运算符的运算成果只需 0 和 1 两种,也便是逻辑的真与假,当指定的条件满意时成果为 1,不满意时成果为 0。
表达式 1 联系运算符 表达式 2 如:I<J,I==J,(I=4)>(J=3),J+I>J
凭借咱们在上一课做好的电路和学习了的相关操作。咱们来做一个联系运算符相关的实例程序。为了添加学习的趣味性和生动性,无妨咱们来假设在做一个会做算术的机器人,当然真实会考虑对话的机器,我想我是做不出来的了,这儿的程序仅仅用来学习联系运算符的根本运用。
#include <AT89X51.H>
#include <stdio.h>
void main(void)
{
int x,y;
SCON = 0x50; //串行口办法 1,答应接纳 TMOD = 0x20; //守时器 1 守时办法 2
TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;
TI = 1;
TR1 = 1; //发动守时器
while(1)
{
printf("您好!我叫 Robot!我是一个会做算术的机器人!\n"); //显现
printf("请您输入两个 int,X 和 Y\n"); //显现
scanf("%d%d",&x,&y); //输入
if (x < y)
printf("X<Y\n"); //当 X 小于 Y 时
else //当 X 不小于 Y 时再作判别
{
if (x == y)
printf("X=Y\n"); //当 X 等于 Y 时
else
printf("X>Y\n"); //当 X 大于 Y 时
}
}
}
要注意的是,在衔接 PC 串行口调试时。发送数字时,发送完一个数字后还要发送一个回
车符,以使 scanf 函数承认有数据输入。
逻辑运算符 联系运算符所能反映的是两个表达式之间的巨细等于联系,那逻辑运算符则是用于求条
件式的逻辑值,用逻辑运算符将联系表达式或逻辑量衔接起来便是逻辑表达式了。或许你会 对为什么“逻辑运算符将联系表达式衔接起来便是逻辑表达式了”这一个描绘有疑问的当地。 其实之前说过“要注意的是用联系运算符的运算成果只需 0 和 1 两种,也便是逻辑的真与假”, 换句话说也便是逻辑量,而逻辑运算符就用于对逻辑量运算的表达。逻辑表达式的一般办法 为:
逻辑与:条件式 1 && 条件式 2 逻辑或:条件式 1 || 条件式 2 逻辑非: ! 条件式 2
图 7-1 演示成果
逻辑与,说白了便是当条件式 1“与”条件式 2 都为真时成果为真(非 0 值),否则为 假(0 值)。也便是说运算会先对条件式 1 进行判别,假如为真(非 0 值),则持续对条件式
2 进行判别,当成果为真时,逻辑运算的成果为真(值为 1),假如成果不为真时,逻辑运算 的成果为假(0 值)。假如在判别条件式 1 时就不为真的话,就不必再判别条件式 2 了,而 直接给出运算成果为假。
逻辑或,是指只需二个运算条件中有一个为真时,运算成果就为真,只需当条件式都不 为真时,逻辑运算成果才为假。
逻辑非则是把逻辑运算成果值取反,也便是说假如两个条件式的运算值为真,进行逻辑 非运算后则成果变为假,条件式运算值为假时终究逻辑成果为真。
相同逻辑运算符也有优先等级,!(逻辑非)→&&(逻辑与)→||(逻辑或),逻辑非的 优先值最高。
如有 !True || False && True
按逻辑运算的优先等级来剖析则得到(True 代表真,False 代表假)
!True || |
False |
&& |
True |
|
False || |
False |
&& |
True |
//!Ture 先运算得 False |
False || |
False |
//False && True 运算得 False |
||
False |
//终究 False || False 得 False |
下面咱们来用程序言语去有表达,如下:
#include <AT89X51.H>
#include <stdio.h>
void main(void)
{
unsigned char True = 1; //界说
unsigned char False = 0;
SCON = 0x50; //串行口办法 1,答应接纳 TMOD = 0x20; //守时器 1 守时办法 2
TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;
TI = 1;
TR1 = 1; //发动守时器
if (!True || False && True)
printf("True\n"); //当成果为真时
else
}
printf("False\n"); //成果为假时
大家能运用以往学习的办法用 keil 或烧到片子上用串行口调试。能更改“!True || False
&& True”这个条件式,以试验不一样算法组合来把握逻辑运算符的运用办法。