• WAP手机版 RSS订阅 加入收藏  设为主页
机械操控

单片机C言语教程(7)运算符和表达式(联系运算符)

时刻:2016-05-07 22:43:40   作者:   来历:   阅览:385   谈论:0

    联系运算符,相同咱们也并不生疏。单片机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

单片机C言语教程(7)运算符和表达式(联系运算符)

图 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”这个条件式,以试验不一样算法组合来把握逻辑运算符的运用办法。


相关谈论

免责声明:本网站旨在彼此学习沟通,是一个完全免费的网站,部分原创著作,欢迎转载,部分内容来自互联网,假如侵犯了您的权力请赶快告诉咱们。

Copyright 2008-2018 万博官网网 站长信箱:279459762@qq.com