當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]關(guān)系運(yùn)算符,同樣我們也并不陌生。單片機(jī)C語言中有六種關(guān)系運(yùn)算符,這些東西同樣是在我們小時候?qū)W算術(shù)時就已經(jīng)學(xué)習(xí)過了的:> 大于< 小于>= 大于等于<= 小于等于== 等

關(guān)系運(yùn)算符,同樣我們也并不陌生。單片機(jī)C語言中有六種關(guān)系運(yùn)算符,這些東西同樣是在我們小時候?qū)W算術(shù)時就已經(jīng)學(xué)習(xí)過了的:

>           大于

<           小于

>=       大于等于

<=       小于等于

==       等于

?。?nbsp;      等于

或者你是個非 C語言 程序員,那么對前四個一定是再熟悉不過的了。而“==”在 VB 或 PASCAL 等中是用“=”,“!=”則是用“not  ”。

小學(xué)時的數(shù)學(xué)課就教授過運(yùn)算符是有優(yōu)先級別的,計(jì)算機(jī)的語言也不過是人類語言的一種擴(kuò)展,這里的運(yùn)算符同樣有著優(yōu)先級別。前四個具有相同的優(yōu)先級,后兩個也具有相同的優(yōu)先級,但是前四個的優(yōu)先級要高于后2個的。

當(dāng)兩個表達(dá)式用關(guān)系運(yùn)算符連接起來時,這個時候就是關(guān)系表達(dá)式。關(guān)系表達(dá)式通常是用來判別某個條件是否滿足。要注意的是用關(guān)系運(yùn)算符的運(yùn)算結(jié)果只有 0 和 1 兩種,也就是邏輯的真與假,當(dāng)指定的條件滿足時結(jié)果為 1,不滿足時結(jié)果為 0。

表達(dá)式 1    關(guān)系運(yùn)算符    表達(dá)式 2 如:I<J,I==J,(I=4)>(J=3),J+I>J

借助我們在上一課做好的電路和學(xué)習(xí)了的相關(guān)操作。我們來做一個關(guān)系運(yùn)算符相關(guān)的實(shí)例程序。為了增加學(xué)習(xí)的趣味性和生動性,不妨我們來假設(shè)在做一個會做算術(shù)的機(jī)器人,當(dāng)然真正會思考對話的機(jī)器,我想我是做不出來的了,這里的程序只是用來學(xué)習(xí)關(guān)系運(yùn)算符的基本應(yīng)用。

#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!我是一個會做算術(shù)的機(jī)器人!n");  //顯示

printf("請您輸入兩個 int,X  和  Yn");  //顯示


scanf("%d%d",&x,&y);       //輸入

if  (x  <  y)

printf("X<Yn");  //當(dāng) X 小于 Y 時

else       //當(dāng) X 不小于 Y 時再作判斷

{

if  (x  ==  y)

printf("X=Yn");  //當(dāng) X 等于 Y 時

else

printf("X>Yn");  //當(dāng) X 大于 Y 時

}

}

}

要注意的是,在連接 PC 串行口調(diào)試時。發(fā)送數(shù)字時,發(fā)送完一個數(shù)字后還要發(fā)送一個回車符,以使 scanf 函數(shù)確認(rèn)有數(shù)據(jù)輸入。

邏輯運(yùn)算符 關(guān)系運(yùn)算符所能反映的是兩個表達(dá)式之間的大小等于關(guān)系,那邏輯運(yùn)算符則是用于求條

件式的邏輯值,用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來就是邏輯表達(dá)式了。也許你會 對為什么“邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來就是邏輯表達(dá)式了”這一個描述有疑惑的地方。 其實(shí)之前說過“要注意的是用關(guān)系運(yùn)算符的運(yùn)算結(jié)果只有 0 和 1 兩種,也就是邏輯的真與假”, 換句話說也就是邏輯量,而邏輯運(yùn)算符就用于對邏輯量運(yùn)算的表達(dá)。邏輯表達(dá)式的一般形式 為:

邏輯與:條件式 1  &&  條件式 2 邏輯或:條件式 1  ||  條件式 2 邏輯非:  !  條件式 2


圖 7-1    演示結(jié)果

邏輯與,說白了就是當(dāng)條件式 1“與”條件式 2 都為真時結(jié)果為真(非 0 值),不然為 假(0 值)。也就是說運(yùn)算會先對條件式 1 進(jìn)行判斷,如果為真(非 0 值),則繼續(xù)對條件式

2 進(jìn)行判斷,當(dāng)結(jié)果為真時,邏輯運(yùn)算的結(jié)果為真(值為 1),如果結(jié)果不為真時,邏輯運(yùn)算 的結(jié)果為假(0 值)。如果在判斷條件式 1 時就不為真的話,就不用再判斷條件式 2 了,而 直接給出運(yùn)算結(jié)果為假。

邏輯或,是指只要二個運(yùn)算條件中有一個為真時,運(yùn)算結(jié)果就為真,只有當(dāng)條件式都不 為真時,邏輯運(yùn)算結(jié)果才為假。

邏輯非則是把邏輯運(yùn)算結(jié)果值取反,也就是說如果兩個條件式的運(yùn)算值為真,進(jìn)行邏輯 非運(yùn)算后則結(jié)果變?yōu)榧?,條件式運(yùn)算值為假時最后邏輯結(jié)果為真。

同樣邏輯運(yùn)算符也有優(yōu)先級別,!(邏輯非)→&&(邏輯與)→||(邏輯或),邏輯非的 優(yōu)先值最高。

如有    !True  ||  False  &&  True

按邏輯運(yùn)算的優(yōu)先級別來分析則得到(True 代表真,F(xiàn)alse 代表假)

!True  ||

False

&&

True

 

False  ||

False

&&

True

//!Ture 先運(yùn)算得 False

False  ||

False

   

//False  &&  True 運(yùn)算得 False

False

     

//最終 False  ||  False 得 False

下面我們來用程序語言去有表達(dá),如下:

#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("Truen");  //當(dāng)結(jié)果為真時


else

}

printf("Falsen");  //結(jié)果為假時

大家能使用以往學(xué)習(xí)的方法用 keil 或燒到片子上用串行口調(diào)試。能更改&ldquo;!True || False

&&  True”這個條件式,以實(shí)驗(yàn)不一樣算法組合來掌握邏輯運(yùn)算符的使用方法。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉