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

關(guān)系運(yùn)算符
  對(duì)于關(guān)系運(yùn)算符,同樣我們也并不陌生。C中有六種關(guān)系運(yùn)算符,這些家伙同樣是在小時(shí)候?qū)W算術(shù)時(shí)學(xué)習(xí)過(guò)的:
 ?。?大于
  < 小于
 ?。荆?大于等于
 ?。迹?小于等于
  == 等于
 ?。。?等于
  或者你是個(gè)非C程序員,那么對(duì)前四個(gè)一定是再熟悉不過(guò)的了。而"=="在VB或PASCAL等中是用"=","!="則是用"not "。由于工作關(guān)系我自己要使用好幾種的程序語(yǔ)言,所以有時(shí)也會(huì)頭暈搞錯(cuò)。老了咯?。篜
小學(xué)時(shí)的數(shù)學(xué)課就教授過(guò)運(yùn)算符是有優(yōu)先級(jí)別的,計(jì)算機(jī)的語(yǔ)言也不過(guò)是人類(lèi)語(yǔ)言的一種擴(kuò)展,這里的運(yùn)算符同樣有著優(yōu)先級(jí)別。前四個(gè)具有相同的優(yōu)先級(jí),后兩個(gè)也具有相同的優(yōu)先級(jí),但是前四個(gè)的優(yōu)先級(jí)要高于后2個(gè)的。
當(dāng)兩個(gè)表達(dá)式用關(guān)系運(yùn)算符連接起來(lái)時(shí),這時(shí)就是關(guān)系表達(dá)式。關(guān)系表達(dá)式通常是用來(lái)判別某個(gè)條件是否滿(mǎn)足。要注意的是用關(guān)系運(yùn)算符的運(yùn)算結(jié)果只有0和1兩種,也就是邏輯的真與假,當(dāng)指定的條件滿(mǎn)足時(shí)結(jié)果為1,不滿(mǎn)足時(shí)結(jié)果為0。
  表達(dá)式1 關(guān)系運(yùn)算符 表達(dá)式2
  如:I<J,I==J,(I=4)>(J=3),J+I>J
  借助我們?cè)谏弦徽n做好的電路和學(xué)習(xí)了的相關(guān)操作。我們來(lái)做一個(gè)關(guān)系運(yùn)算符相關(guān)的實(shí)例程序。為了增加學(xué)習(xí)的趣味性和生動(dòng)性,不妨我們來(lái)假設(shè)在做一個(gè)會(huì)做算術(shù)的機(jī)器人,當(dāng)然真正會(huì)思考對(duì)話的機(jī)器,我想我是做不出來(lái)的了,這里的程序只是用來(lái)學(xué)習(xí)關(guān)系運(yùn)算符的基本應(yīng)用。
#include
#include

void main(void)
{
int x,y;

SCON = 0x50; //串口方式1,允許接收
TMOD = 0x20; //定時(shí)器1定時(shí)方式2
TH1 = 0xE8; //11.0592MHz1200波特率
TL1 = 0xE8;
TI = 1;
TR1 = 1; //啟動(dòng)定時(shí)器

while(1)
{
printf("您好!我叫Robot!我是一個(gè)會(huì)做算術(shù)的機(jī)器人!n"); //顯示
printf("請(qǐng)您輸入兩個(gè)int,X 和 Yn"); //顯示
sCANf("%d%d",&x,&y); //輸入
if (x < y)
printf("Xelse //當(dāng)X不小于Y時(shí)再作判斷
{
if (x == y)
printf("X=Yn"); //當(dāng)X等于Y時(shí)
else
printf("X>Yn"); //當(dāng)X大于Y時(shí)
}
}
}

  要注意的是,在連接PC串口調(diào)試時(shí)。發(fā)送數(shù)字時(shí),發(fā)送完一個(gè)數(shù)字后還要發(fā)送一個(gè)回車(chē)符,以使scanf函數(shù)確認(rèn)有數(shù)據(jù)輸入。Printf,scanf函數(shù)的具體用法,將和其它相關(guān)函數(shù)集中出現(xiàn)在www.cdle.net的C51函數(shù)詳解中,敬請(qǐng)大家留意。
邏輯運(yùn)算符
  關(guān)系運(yùn)算符所能反映的是兩個(gè)表達(dá)式之間的大小等于關(guān)系,那邏輯運(yùn)算符則是用于求條件式的邏輯值,用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)就是邏輯表達(dá)式了。也許你會(huì)對(duì)為什?quot;邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來(lái)就是邏輯表達(dá)式了"這一個(gè)描述有疑惑的地方。其實(shí)之前說(shuō)過(guò)"要注意的是用關(guān)系運(yùn)算符的運(yùn)算結(jié)果只有0和1兩種,也就是邏輯的真與假",換句話說(shuō)也就是邏輯量,而邏輯運(yùn)算符就用于對(duì)邏輯量運(yùn)算的表達(dá)。至于復(fù)雜的邏輯量的運(yùn)算法則我也知之甚少,如要了解的朋友可以參看數(shù)字電路的教科書(shū)、邏輯學(xué)或數(shù)學(xué)書(shū),而之里只能說(shuō)說(shuō)簡(jiǎn)單常用的幾種。邏輯表達(dá)式的一般形式為:
  邏輯與:條件式1 && 條件式2
  邏輯或:條件式1 || 條件式2
  邏輯非: ! 條件式2

      圖7-5 演示結(jié)果
  邏輯與,說(shuō)白了就是當(dāng)條件式1"與"條件式2都為真時(shí)結(jié)果為真(非0值),否則為假(0值)。也就是說(shuō)運(yùn)算會(huì)先對(duì)條件式1進(jìn)行判斷,如果為真(非0值),則繼續(xù)對(duì)條件式2進(jìn)行判斷,當(dāng)結(jié)果為真時(shí),邏輯運(yùn)算的結(jié)果為真(值為1),如果結(jié)果不為真時(shí),邏輯運(yùn)算的結(jié)果為假(0值)。如果在判斷條件式1時(shí)就不為真的話,就不用再判斷條件式2了,而直接給出運(yùn)算結(jié)果為假。
邏輯或,是指只要二個(gè)運(yùn)算條件中有一個(gè)為真時(shí),運(yùn)算結(jié)果就為真,只有當(dāng)條件式都不為真時(shí),邏輯運(yùn)算結(jié)果才為假。
邏輯非則是把邏輯運(yùn)算結(jié)果值取反,也就是說(shuō)如果兩個(gè)條件式的運(yùn)算值為真,進(jìn)行邏輯非運(yùn)算后則結(jié)果變?yōu)榧伲瑮l件式運(yùn)算值為假時(shí)最后邏輯結(jié)果為真。
  同樣邏輯運(yùn)算符也有優(yōu)先級(jí)別,!(邏輯非)→&&(邏輯與)→||(邏輯或),邏輯非的優(yōu)先值最高。
如有 !True || False && True
按邏輯運(yùn)算的優(yōu)先級(jí)別來(lái)分析則得到(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
下面我們來(lái)用程序語(yǔ)言去有表達(dá),如下:
#include
#include
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"); //當(dāng)結(jié)果為真時(shí)
else
printf("Falsen"); //結(jié)果為假時(shí)
}

大家可以使用以往學(xué)習(xí)的方法用keil或燒到片子上用串口調(diào)試??梢愿?!True || False && True"這個(gè)條件式,以實(shí)驗(yàn)不同算法組合來(lái)掌握邏輯運(yùn)算符的使用方法。


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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