久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11715|回復: 8
收起左側

初學者單片機C語言運算符

  [復制鏈接]
ID:277999 發表于 2018-1-24 09:42 | 顯示全部樓層 |閱讀模式
單片機C語言運算符
單片機及C語言學習
auto        存儲種類說明        用以說明局部變量,缺省值為此

break        程序語句        退出最內層循環

case        程序語句        Switch語句中的選擇項

char        數據類型說明        單字節整型數或字符型數據

const        存儲類型說明        在程序執行過程中不可更改的常量值

continue        程序語句        轉向下一次循環

default        程序語句        Switch語句中的失敗選擇項

do        程序語句        構成do..while循環結構

double        數據類型說明        雙精度浮點數

else        程序語句        構成if..else選擇結構

enum        數據類型說明        枚舉

extern        存儲種類說明        在其他程序模塊中說明了的全局變量

flost        數據類型說明        單精度浮點數

for        程序語句        構成for循環結構

goto        程序語句        構成goto轉移結構

if        程序語句        構成if..else選擇結構

int        數據類型說明        基本整型數

long        數據類型說明        長整型數

register        存儲種類說明        使用CPU內部寄存的變量

return        程序語句        函數返回

short        數據類型說明        短整型數

signed        數據類型說明        有符號數,二進制數據的最高位為符號位

sizeof        運算符        計算表達式或數據類型的字節數

static        存儲種類說明        靜態變量

struct        數據類型說明        結構類型數據

swicth        程序語句        構成switch選擇結構

typedef        數據類型說明        重新進行數據類型定義

union        數據類型說明        聯合類型數據

unsigned        數據類型說明        無符號數數據

void        數據類型說明        無類型數據

volatile        數據類型說明        該變量在程序執行中可被隱含地改變

while        程序語句        構成while和do..while循環結構

附表1-1 ANSIC標準關鍵字



關鍵字        用 途        說 明

bit        位標量聲明        聲明一個位標量或位類型的函數

sbit        位標量聲明        聲明一個可位尋址變量

Sfr        特殊功能寄存器聲明        聲明一個特殊功能寄存器

Sfr16        特殊功能寄存器聲明        聲明一個16位的特殊功能寄存器

data        存儲器類型說明        直接尋址的內部數據存儲器

bdata        存儲器類型說明        可位尋址的內部數據存儲器

idata        存儲器類型說明        間接尋址的內部數據存儲器

pdata        存儲器類型說明        分頁尋址的外部數據存儲器

xdata        存儲器類型說明        外部數據存儲器

code        存儲器類型說明        程序存儲器

interrupt        中斷函數說明        定義一個中斷函數

reentrant        再入函數說明        定義一個再入函數

using        寄存器組定義        定義芯片的工作寄存器



附錄二 AT89C51特殊功能寄存器列表(適用于同一架構的芯片)

帶*號的特殊功能寄存器都是可以位尋址的寄存器

符 號        地 址        注 釋

*ACC        E0H        累加器

*B        F0H        乘法寄存器

*PSW        D0H        程序狀態字

SP        81H        堆棧指針

DPL        82H        數據存儲器指針低8位

DPH        83H        數據存儲器指針高8位

*IE        A8H        中斷允許控制器

*IP        D8H        中斷優先控制器

*P0        80H        端口0

*P1        90H        端口1

*P2        A0H        端口2

*P3        B0H        端口3

PCON        87H



電源控制及波特率選擇

*SCON        98H        串行口控制器

SBUF        99H        串行數據緩沖器

*TCON        88H        定時器控制

TMOD        89H        定時器方式選擇

TL0        8AH        定時器0低8位

TL1        8BH        定時器1低8位

TH0        8CH        定時器0低8位

TH1        8DH        定時器1高8位

附錄三 運算符優先級和結合性

級 別        類 別        名 稱        運算符        結合性

1        強制轉換、數組、

結構、聯合        強制類型轉換        ( )        右結合

下標        [ ]

存取結構或聯合成員        ->或.

2        邏 輯        邏輯非        !        左結合

字 位        按位取反        ~

增 量        加一        ++

減 量        減一        --

指 針        取地址        &

取內容        *

算 術        單目減        -

長度計算        長度計算        sizeof

3        算 術        乘        *        右結合

除        /

取模        %

4        算術和指針運算        加        +

減        -

5        字 位        左移        <<

右移        >>

6        關系        大于等于        >=

大于        >

小于等于        <=

小于        <

7        恒等于        ==

不等于        !=

8        字 位        按位與        &

9        按位異或        ^

10        按位或        |

11        邏 輯        邏輯與        &&        左結合

12        邏輯或        ||

13        條 件        條件運算        ?:

14        賦 值        賦值        =

復合賦值        Op=

15        逗 號        逗號運算        ,        右結合

1.算術運算符

  用于各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。

  2.關系運算符

  用于比較運算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。

  3.邏輯運算符

  用于邏輯運算。包括與(&&)、或(||)、非(!)三種。

  4.位操作運算符

  參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

  5.賦值運算符

  用于賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。

  6.條件運算符

  這是一個三目運算符,用于條件求值(?:)。

  7.逗號運算符

  用于把若干表達式組合成一個表達式(,)。

  8.指針運算符

  用于取內容(*)和取地址(&)二種運算。

  9.求字節數運算符

  用于計算數據類型所占的字節數(sizeof)。

  10.特殊運算符

  有括號(),下標[],成員(→,.)等幾種。

  優先級和結合性

  c語言中,運算符的運算優先級共分為15級。1級最高,15級最低。在表達式中,優先級較高的先于優先級較低的進行運算。而在一個運算量兩側的運算符優先級相同時,則按運算符的結合性所規定的結合方向處理。 c語言中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算符的結合性是自左至右,即先左后右。如有表達式x-y+z則y應先與“-”號結合,執行x-y運算,然后再



執行+z的運算。這種自左至右的結合方向就稱為“左結合性”。而自右至左的結合方向稱為“右結合性”。最典型的右結合性運算符是賦值運算符。如x=y=z,由于“=”的右結合性,應先執行y=z再執行x=(y=z)運算。 c語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。

  算術運算符和算術表達式基本的算術運算符

  1.加法運算符“+”加法運算符為雙目運算符,即應有兩個量參與加法運算。如a+b,4+8等。具有右結合性。

  2.減法運算符“-”減法運算符為雙目運算符。但“-”也可作負值運算符,此時為單目運算,如-x,-5等具有左結合性。

  3.乘法運算符“*”雙目運算,具有左結合性。

  4.除法運算符“/”雙目運算具有左結合性。參與運算量均為整型時,結果也為整型,舍去小數。如果運算量中有一個是實型,則結果為雙精度實型。

  void main(){

  printf(\"\\n\\n%d,%d\\n\",20/7,-20/7);

  printf(\"%f,%f\\n\",20.0/7,-20.0/7);

  }

  雙目運算具有左結合性。參與運算量均為整型時,結果也為整型,舍去小數。如果運算量中有一個是實型,則結果為雙精度實型。 printf(\"\\n\\n%d,%d\\n\",20/7,-20/7);

  printf(\"%f,%f\\n\",20.0/7,-20.0/7);

  本例中,20/7,-20/7的結果均為整型,小數全部舍去。而20.0/7和-20.0/7由于有實數參與運算,因此結果也為實型。

  5.求余運算符(模運算符)“%”雙目運算,具有左結合性。要求參與運算的量均為整型。求余運算的結果等于兩數相除后的余數。

  void main(){

  printf(\"%d\\n\",100%3);

  }

  雙目運算,具有左結合性。求余運算符%要求參與運算的量均為整型。本例輸出100除以3所得的余數1。

  自增1,自減1運算符

  自增1運算符記為“++”,其功能是使變量的值自增1。自減1運算符記為“--”,其功能是使變量值自減1。自增1,自減1運算符均為單目運算,都具有右結合性。可有以下幾種形式: ++i i自增1后再參與其它運算。--i i自減1后再參與其它運算。

  i++i參與運算后,i的值再自增1。

  i--i參與運算后,i的值再自減1。

  在理解和使用上容易出錯的是i++和i--。特別是當它們出在較復雜的表達式或語句中時,常常難于弄清,因此應仔細分析。

  void main(){

  int i=8;

  printf(\"%d\\n\",++i);

  printf(\"%d\\n\",--i);

  printf(\"%d\\n\",i++);

  printf(\"%d\\n\",i--);

  printf(\"%d\\n\",-i++);

  printf(\"%d\\n\",-i--);

  } i<--8

  i<--i+1

  i<--i-1

  i<--i+1

  i<--i-1

  i<--i+1

  i<--i-1 int i=8;

  printf(\"%d\\n\",++i);

  printf(\"%d\\n\",--i);

  printf(\"%d\\n\",i++);

  printf(\"%d\\n\",i--);

  pri



ntf(\"%d\\n\",-i++);

  printf(\"%d\\n\",-i--);

  i的初值為8

  第2行i加1后輸出故為9;

  第3行減1后輸出故為8;

  第4行輸出i為8之后再加1(為9);

  第5行輸出i為9之后再減1(為8);

  第6行輸出-8之后再加1(為9);

  第7行輸出-9之后再減1(為8)

  void main(){

  int i=5,j=5,p,q;

  p=(i++)+(i++)+(i++);

  q=(++j)+(++j)+(++j);

  printf(\"%d,%d,%d,%d\",p,q,i,j);

  }

  i<--5,j<--5,p<--0,q<--0

  i+i+i--->p,i+1-->i,i+1-->i,i+1-->i

  j+1->j,j+1->j,j+1->j,j+j+j->q int i=5,j=5,p,q;

  p=(i++)+(i++)+(i++);

  q=(++j)+(++j)+(++j);

  這個程序中,對p=(i++)+(i++)+(i++)應理解為三個i相加,故p值為15。然后i再自增1三次相當于加3故i的最后值為8。而對于q的值則不然,q=(++j)+(++j)+(++j)應理解為q先自增1,再參與運算,由于q自增1三次后值為8,三個8相加的和為24,j的最后值仍為8。算術表達式表達式是由常量、變量、函數和運算符組合起來的式子。一個表達式有一個值及其類型,它們等于計算表達式所得結果的值和類型。表達式求值按運算符的優先級和結合性規定的順序進行。單個的常量、變量、函數可以看作是表達式的特例。

評分

參與人數 3黑幣 +59 收起 理由
morrisliao + 5 很給力!
旋風sv + 4 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:266802 發表于 2018-1-25 06:29 來自手機 | 顯示全部樓層
不錯,收藏了
回復

使用道具 舉報

ID:279740 發表于 2018-1-26 19:56 來自手機 | 顯示全部樓層
我收藏了,。。
回復

使用道具 舉報

ID:279640 發表于 2018-1-26 19:59 | 顯示全部樓層
挺不錯的。;學習了!!
回復

使用道具 舉報

ID:145935 發表于 2018-1-27 16:59 | 顯示全部樓層
謝謝樓主分享
回復

使用道具 舉報

ID:279878 發表于 2018-1-28 21:46 | 顯示全部樓層
不錯 收藏了 很有幫助
回復

使用道具 舉報

ID:266802 發表于 2018-1-31 06:57 來自手機 | 顯示全部樓層
bc不錯不錯
回復

使用道具 舉報

ID:260785 發表于 2018-1-31 08:30 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:272625 發表于 2018-2-5 21:41 來自手機 | 顯示全部樓層
不錯,小白收了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美在 | 91新视频| 国产亚洲精品区 | 国产精品久久久久久模特 | 久久精品黄色 | 国产视频第一页 | 草久视频 | 欧美精品一区二区蜜桃 | 激情欧美一区二区三区 | 欧美日韩在线一区二区 | 成人精品区 | 国产欧美日韩一区 | 粉嫩一区二区三区四区公司1 | 在线视频国产一区 | 日本一区二区不卡 | 成人在线免费观看 | 国产精品一区二区三区久久久 | 久久一级大片 | 最新中文字幕在线 | 国产精品高清一区二区三区 | 亚洲综合无码一区二区 | 亚洲综合色丁香婷婷六月图片 | 国产精品乱码一区二三区小蝌蚪 | 一级片免费视频 | 国精久久 | 怡红院成人在线视频 | 日韩精品一区二区三区中文在线 | 国产精品久久久久无码av | 97国产精品 | 亚洲精品一区二区三区中文字幕 | 欧美激情久久久 | 日本污视频 | 成人免费一级视频 | 国产精品区一区二区三 | 午夜精品久久久久久久久久久久 | 国产成人精品一区二区三区在线 | 久久精品一 | 羞羞视频免费观看入口 | 亚洲综合在线播放 | 欧美性极品xxxx做受 | 日韩欧美在线一区 |