單片機c語言教程第七章--運算符和表達式(關係運算符)

2021-01-07 電子發燒友
單片機c語言教程第七章--運算符和表達式(關係運算符)

佚名 發表於 2009-04-15 09:37:37

關係運算符,同樣我們也並不陌生。單片機C語言中有六種關係運算符,這些東西同樣是在我們小時候學算術時就已經學習過了的:

> 大於

< 小於

>= 大於等於

<= 小於等於

== 等於

!= 等於

或者你是個非 C語言 程式設計師,那麼對前四個一定是再熟悉不過的了。而「==」在 VB 或 PASCAL 等中是用「=」,「!=」則是用「not 」。

小學時的數學課就教授過運算符是有優先級別的,計算機的語言也不過是人類語言的一種擴展,這裡的運算符同樣有著優先級別。前四個具有相同的優先級,後兩個也具有相同的優先級,但是前四個的優先級要高於後2個的。

當兩個表達式用關係運算符連接起來時,這個時候就是關係表達式。關係表達式通常是用來判別某個條件是否滿足。要注意的是用關係運算符的運算結果只有 0 和 1 兩種,也就是邏輯的真與假,當指定的條件滿足時結果為 1,不滿足時結果為 0。

表達式 1 關係運算符 表達式 2 如:I<J,I==J,(I=4)>(J=3),J+I>J

藉助我們在上一課做好的電路和學習了的相關操作。我們來做一個關係運算符相關的實例程序。為了增加學習的趣味性和生動性,不妨我們來假設在做一個會做算術的機器人,當然真正會思考對話的機器,我想我是做不出來的了,這裡的程序只是用來學習關係運算符的基本應用。

#include

#include

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

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

#include

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」這個條件式,以實驗不一樣算法組合來掌握邏輯運算符的使用方法。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 單片機c語言教程:運算符和表達式(關係運算符)
    關係運算符,同樣我們也並不陌生。單片機C語言中有六種關係運算符,這些東西同樣是在我們小時候學算術時就已經學習過了的:本文引用地址:http://www.eepw.com.cn/article/170887.htm> 大於< 小於>= 大於等於<= 小於等於== 等於!
  • 單片機c語言教程:C51運算符和表達式
    typedef 的語法是typedef 已有的數據類型 新的數據類型名 運算符就是完成某種特定運算的符號。運算符按其表達式中與運算符的關係可分為單目運算符,雙目運算符和三目運算符。單目就是指需要有一個運算對象,雙目就要求有兩個運 算對象,三目則要三個運算對象。
  • C語言中的運算符和表達式
    1、加法和減法運算符加法運算符為「+」,使運算符兩側的值相加,兩側的值可以是變量、常量和表達式等。減法運算符為「-」,使運算符左側的值減去右側的值。5、自增和自減運算符自增運算符為「++」,自減運算符為「--」。自增運算符使運算對象遞增1,有兩種形式:運算符在變量的左側,稱前綴模式,運算符在變量的右側,稱後綴模式。
  • Python語言教程算術運算與算術表達式的介紹
    Python語言教程算術運算與算術表達式的介紹 Python語言教程在算術運算符與算術的表達方式是我們值得學習的知識。下面我們就來詳細的看看Python語言教程中的相關信息。
  • 單片機教程:PIC單片機C語言程序設計(五)
    接前文:單片機教程:PIC單片機C語言程序設計(四)   九、C語言的運算符   C語言提供了30多個運算符,範圍很大,應用廣。除了控制語句和輸入、輸出之外,幾乎所有的基本操作,都是按照運算符來進行處理的,可見其在C語言中的重要性。  1.C語言運算符的作用與分類  C語言的運算符可以靈活地與運算對象組合成運算表達式。按其在表達式中的作用,運算符可分成基本運算符和其他運算符。
  • PIC單片機C語言程序設計(5)
    除了控制語句和輸入、輸出之外,幾乎所有的基本操作,都是按照運算符來進行處理的,可見其在C語言中的重要性。  1.C語言運算符的作用與分類  C語言的運算符可以靈活地與運算對象組合成運算表達式。按其在表達式中的作用,運算符可分成基本運算符和其他運算符。
  • 單片機c語言教程:C51運算符和表達式(指針和地址運算符)
    指針是單片機C語言中一個十分重要的概念,也是學習單片機C語言中的一個難點。對於指針將會在第九課中做詳細的講解。在這裡我們先來了解一下單片機C語言中供給的兩個專門用於指針和地址的運算符:本文引用地址:http://www.eepw.com.cn/article/170885.htm* 取內容 取地址取內容和地址的一般形式分別為:變量 = * 指針變量 指針變量 = 目標變量
  • [C語言] 運算符和表達式
    例如:2+3,其操作數是2和3,而運算符則是「+」操作數:是運算符作用於的實體,操作數指出指令執行的操作所需要數據的來源。表達式:是由數字、運算符、數字分組符號(括號)、自由變量等以能求得數值的有意義排列方法所得的組合。
  • c語言基礎語法五:運算符與表達式
    取地址符&逗號運算符sizeof運算符運算符的優先性與結合性二:表達式3 // 我們寫代碼最好將其分開 n2 = n1; n1++; n1++; n3 = n1; return 0;}3.取地址符&在scanf_s的時候,要求傳遞變量的地址,但是變量的地址又是無法預測的,所以我們需要使用C語言提供的取地址符&去獲取變量的地址
  • C語言入門教程運算符
    條件運算符其他運算符2.算術運算符算術運算符分為單目運算符和雙目運算符,單目運算符表示只需要一個操作數,雙目運算符需要兩個操作數。C語言中的除法運算,不同類型的除數和被除數會導致不同類型的運算結果。一種情況是,當除數和被除數都是整數時,運算結果也是整數。當不能整除時,就直接捨棄小數部分,只保留整數部分。另一種情況是,一旦除數和被除數中有一個是小數,那麼運算結果也是小數,並且是double類型的小數。C語言中的取餘運算,就是求相除後的餘數。取餘運算中%的兩邊都必須是整數,不能出現小數,否則會報錯。
  • NJS14丨淺談C語言的運算符與表達式1
    今天一起來分析C語言的運算符和關係表達式。以下內容,只代表個人觀點,不一定對,僅供參考,隨便看看。利用賦值運算符將一個變量與一個表達式連接起來的式子為賦值表達式,在表達式後面加「;」便構成了賦值語句。使用"="的賦值語句格式如下:   變量 = 表達式。
  • C語言——選擇結構設計(switch語句和關係運算符及關係表達式)
    廢話不多說了,我們先來看例題;#include<stdio.h>int main(){char grade;scanf("%c",&grade);注意;其中括號內的『表達式』,其值的類型應為整型類型(包括字符型);可以沒有default標號;每一個case常量必須不同,以免發生衝突。case標號僅僅起標記作用。關係運算符和關係表達式在循環語句中,少不了判斷,大家都知道判斷的符號有大於,小於等等。
  • C/C++運算符優先級和結合性
    另外兩個從右往左結合的運算符也很好記,因為它們很特殊:一個是單目運算符,一個是三目運算符。其餘都是從左往右的結合性。(2)優先級基本優先級:算術運算符 > 關係運算符 > 邏輯運算符 > 賦值運算符。比較特殊的是邏輯非(!)作為單目運算符,優先級高於所有的雙目和三目運算符。複合運算符的級別比其他運算符都低,僅僅高於逗號運算符。
  • c程序的運算符和表達式(一)
    一、計算a/b和a%b的值「/」是運算符中的除,在使用該運算符時除了分母不能為0外,還要特別注意在c語言中如果兩個操作數a、b的值都是整型,結果也是整型;「%」是取餘運算,要求兩個操作數必須是整型。例如9%2的值為1,而9.5%2是非法的。
  • C語言基礎7-運算符優先級和結合性一覽表
    但是C語言中的運算符已經遠不止四則運算中的加減乘除了,還有其他很多運算符。當它們出現在同一個表達式中時先計算誰後計算誰呢?所以本節還是有必要講一下的。特別最後還會將所有運算符總結展示出來,然後告訴大家哪個優先級高、哪個優先級低。首先不需要專門記憶,也沒有必要。因為作為初學者,哪個優先級高、哪個優先級低我們很難記住。就算死記硬背記住了,時間長不用也會忘記。
  • 單片機C語言教程-基礎語句
    (在第五章函數中再詳細介紹)例如printf(\"c program\");調用庫函數,輸出字符串。  3.控制語句  控制語句用於控制程序的流程,以實現程序的各種結構方式。  它們由特定的語句定義符組成。c語言有九種控制語句。
  • C語言中的運算符
    ,他們也是運算符,並且優先級與括號相當,這也是我們把兩者放在一起討論的原因。至於如何使用則是結構體的內容。單目運算符:單目運算符有很多,例如:!邏輯非、~按位取反、++自增、--自減、+正、-負、&求地址運算符、*間址運算符、sizeof()求所佔字節數、(類型名)強制類型轉換。這些運算符的運算對象只有一個。
  • PIC單片機C語言程序設計(4)
    格式:if(表達式) 語句1  else 語句2  其中else 為選擇項;即可有、可無的。所以條件語句,可分為兩種;if 語句和if— else 語句。  式中的表達式為關係表達式或邏輯表達式以及由條件運算符(有關運算符將在後文介紹)構成的一種表達式。
  • c語言運算符號
    C語言運算符號指的是運算符號。C語言中的符號分為10類:算術運算符、關係運算符、邏輯運算符、位操作運算符、賦值運算符、條件運算符、逗號運算符、指針運算符、求字節數運算符和特殊運算符。注意事項運算符號的優先級總個數34 種相關概念優先級、結合性種類算術運算符用於各類數值運算。
  • 有意思的C語言運算符
    在C語言中,運算符用於執行程序代碼運算,會針對兩個或者兩個以上操作數進行運算。