單片機c語(yǔ)言教程:運算符和表達式(關(guān)系運算符)
要注意的是,在連接 PC 串行口調試時(shí)。發(fā)送數字時(shí),發(fā)送完一個(gè)數字后還要發(fā)送一個(gè)回車(chē)符,以使 scanf 函數確認有數據輸入。
邏輯運算符 關(guān)系運算符所能反映的是兩個(gè)表達式之間的大小等于關(guān)系,那邏輯運算符則是用于求條
件式的邏輯值,用邏輯運算符將關(guān)系表達式或邏輯量連接起來(lái)就是邏輯表達式了。也許你會(huì ) 對為什么“邏輯運算符將關(guān)系表達式連接起來(lái)就是邏輯表達式了”這一個(gè)描述有疑惑的地方。 其實(shí)之前說(shuō)過(guò)“要注意的是用關(guān)系運算符的運算結果只有 0 和 1 兩種,也就是邏輯的真與假”, 換句話(huà)說(shuō)也就是邏輯量,而邏輯運算符就用于對邏輯量運算的表達。邏輯表達式的一般形式 為:
邏輯與:條件式 1 條件式 2 邏輯或:條件式 1 || 條件式 2 邏輯非: ! 條件式 2
圖 7-1 演示結果
邏輯與,說(shuō)白了就是當條件式 1“與”條件式 2 都為真時(shí)結果為真(非 0 值),不然為 假(0 值)。也就是說(shuō)運算會(huì )先對條件式 1 進(jìn)行判斷,如果為真(非 0 值),則繼續對條件式
2 進(jìn)行判斷,當結果為真時(shí),邏輯運算的結果為真(值為 1),如果結果不為真時(shí),邏輯運算 的結果為假(0 值)。如果在判斷條件式 1 時(shí)就不為真的話(huà),就不用再判斷條件式 2 了,而 直接給出運算結果為假。
邏輯或,是指只要二個(gè)運算條件中有一個(gè)為真時(shí),運算結果就為真,只有當條件式都不 為真時(shí),邏輯運算結果才為假。
邏輯非則是把邏輯運算結果值取反,也就是說(shuō)如果兩個(gè)條件式的運算值為真,進(jìn)行邏輯 非運算后則結果變?yōu)榧?,條件式運算值為假時(shí)最后邏輯結果為真。
同樣邏輯運算符也有優(yōu)先級別,!(邏輯非)→(邏輯與)→||(邏輯或),邏輯非的 優(yōu)先值最高。
如有 !True || False True
按邏輯運算的優(yōu)先級別來(lái)分析則得到(True 代表真,False 代表假)
!True || | False | True | ||
False || | False | True | //!Ture 先運算得 False | |
False || | False | //False True 運算得 False | ||
False | //最終 False || False 得 False |
下面我們來(lái)用程序語(yǔ)言去有表達,如下:
#include AT89X51.H>
#include stdio.h>
void main(void)
{
unsigned char True = 1; //定義
unsigned char False = 0;
SCON = 0x50; //串行口方式 1,允許接收 TMOD = 0x20; //定時(shí)器 1 定時(shí)方式 2
TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;
TI = 1;
TR1 = 1; //啟動(dòng)定時(shí)器
if (!True || False True)
printf(Truen); //當結果為真時(shí)
else
}
printf(Falsen); //結果為假時(shí)
大家能使用以往學(xué)習的方法用 keil 或燒到片子上用串行口調試。能更改“!True || False
True”這個(gè)條件式,以實(shí)驗不一樣算法組合來(lái)掌握邏輯運算符的使用方法。
評論