在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)之C語言-4.4運(yùn)算符及表達(dá)式

            51單片機(jī)之C語言-4.4運(yùn)算符及表達(dá)式

            作者: 時(shí)間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
            4.4 運(yùn)算符表達(dá)式

            前面三節(jié)實(shí)際是講如何定義一個數(shù)據(jù)類型,所謂數(shù)據(jù)類型其實(shí)就是不同存儲空間的形狀,也就是不同單元格的組合方式。既然定義了數(shù)據(jù)類型,我們的目的當(dāng)然是如何使用它們,比如賦值,比較大小,移位變化,等待。簡單的講就是”誰”-數(shù)據(jù)類型, “怎么樣”-如何運(yùn)算。往我們定義的單元格中填充內(nèi)容。既然要運(yùn)算當(dāng)然有配套的運(yùn)算符和表達(dá)式,現(xiàn)在將各種運(yùn)算符及表達(dá)式總結(jié)如表4-4-1所示。

            本文引用地址:http://www.biyoush.com/article/201611/319553.htm

            這里我們選取幾個在單片機(jī)編程中比較常見的運(yùn)算符進(jìn)行講解。

            (1) 自增運(yùn)算和自減運(yùn)算

            對于運(yùn)算符相信大家非常熟悉,這里不細(xì)講。值得提醒一下的是,自增和自減運(yùn)算符,

            ++a:a的值先增加1后,再參與其他運(yùn)算

            a++: a的值先參與其他運(yùn)算,再使a的值增加1

            --a: a的值先減小1后,再參與其他運(yùn)算

            a--: a的值先參與其他運(yùn)算,再使a的值減小1

            這里我們舉一個例子:

            a = 1;

            b = 0;

            a = ++b;

            a = 1;

            b = 0;

            a = b++;

            現(xiàn)在我們在VS2013中驗(yàn)證一下輸出結(jié)果,

            #include

            void main(void)

            {

            int a, b;

            a = 1;

            b = 0;

            b = a++;

            printf("a=%dnb=%dn",a,b);//輸出結(jié)果a=2,b=1

            a = 1;

            b = 0;

            b = ++a;

            printf("a=%dnb=%dn",a,b);//輸出結(jié)果a=2,b=2

            system("pause");

            }

            (2)賦值運(yùn)算

            賦值運(yùn)算符很好理解,需要注意的是書寫形式,比如

            a = a + 1;

            很多情況下我們看到的表達(dá)式是把運(yùn)算符”+”放到”=”前面,然后把第二個a去掉

            a += 1;

            (3)關(guān)系運(yùn)算符

            在關(guān)系運(yùn)算符中,在比較a與b是否相等的時(shí)候,使用a==b,這里容易漏掉一個等號

            而a=b表示把b的值賦給a

            (4)邏輯運(yùn)算

            參加邏輯運(yùn)算的對象,用”0”表示假,用”非0”表示真.

            邏輯運(yùn)算的運(yùn)算規(guī)則可見的歸納為:

            邏輯與-同真為真,邏輯或同假為假,邏輯非遇假變真,遇真變假

            (5)位運(yùn)算

            左移的規(guī)則是將二進(jìn)制數(shù)向左移動若干位,左邊移走的高位被丟棄,右邊被空出來的低位補(bǔ)零。

            右移的規(guī)則是將二進(jìn)制數(shù)向右移若干位,右移與被移動的數(shù)據(jù)是否帶符號有關(guān)。對于無符號整數(shù)來講,左端空出的高位全部補(bǔ)0.

            這里我們不討論帶符號的位移

            例4-4-1 通過位移的方法創(chuàng)建流水燈

            #include "reg52.h"

            typedef unsigned char uchar;

            void delayUs(uchar t);

            void delayMs(uchar t);

            void main(void)

            {

            uchar LED=0X80;//10000000

            uchar i;

            while(1)

            {

            for (i=0;i<8;i++)

            {

            P1= ~LED;//按位非

            LED>>=1;

            delayMs(100);

            }

            LED=0X80;

            }

            }

            void delayUs(uchar t)

            {

            while(--t);

            }

            void delayMs(uchar t)

            {

            while(--t)

            {

            delayUs(245);

            delayUs(245);

            }

            }

            (6)逗號和條件運(yùn)算符

            逗號運(yùn)算符是所有運(yùn)算符中優(yōu)先級最低的,運(yùn)算的結(jié)果值是最后一個表達(dá)式的值。例如:

            int a,b,c,d;

            d=(a=1,b=a+2,c=b+3);

            printf("d=%dn",d)

            那么以上輸出的結(jié)果為6.在很多情況下,使用逗號表達(dá)式的目的只是想分別得到各個表達(dá)式的值,而并非一定需要得到和使用整個逗號表達(dá)式的值,逗號表達(dá)式最常用與循環(huán)語句(for語句)中。

            例如:

            for(s=0,i=1;i<=100;s+=i,i++)

            條件表達(dá)式的一般形式為:

            表達(dá)式1 ?表達(dá)式2 :表達(dá)式3

            條件表達(dá)式中含有三個操作對象,它們都是表達(dá)式。一般,表達(dá)式1是關(guān)系表達(dá)式或邏輯表達(dá)式,用于描述條件表達(dá)式中的條件,根據(jù)條件的真假判斷是進(jìn)行表達(dá)式2的運(yùn)算還是進(jìn)行表達(dá)式3的運(yùn)算。表達(dá)式2和表達(dá)式3可以是常量,變量或表達(dá)式如算術(shù)表達(dá)式,關(guān)系表達(dá)式,賦值表達(dá)式和邏輯表達(dá)式等。

            一般情況下,條件表達(dá)式與結(jié)構(gòu)程序設(shè)計(jì)中的if語句可以進(jìn)行相互替換。

            例如:

            max = (a>b) ? a : b

            用if語句表示為:

            if (a>b)

            {

            max=a;

            }

            else

            {

            max=b;

            }

            但不是所有的條件語句都能替換,比如

            if (a>b)

            {

            printf("%d",a);

            }

            else

            {

            printf("%d",b);

            }

            這里不能使用以下語句替換,

            a>b?printf("%d",a) : printf("%d",b);

            為什么?因?yàn)闂l件表達(dá)式的結(jié)果是一個值,要將這個值賦給一個變量或以一個值的形式輸出,而上面的形式表示的是,如果a>b為真,就將a以整型的形式輸出,否則將b以整型的形式輸出,而在實(shí)際編程過程中無法將其值輸出。

            表4-4-1 運(yùn)算符及表達(dá)式總結(jié)表?



            評論


            技術(shù)專區(qū)

            關(guān)閉