C基礎(chǔ)——詞法符號(嵌入式學(xué)習(xí))-創(chuàng)新互聯(lián)

詞法符號
  • 概念
  • 關(guān)鍵字(32個)
    • 概念
    • 分類
      • 存儲類型
      • 數(shù)據(jù)類型
      • 構(gòu)造類型
      • 選擇結(jié)構(gòu)
      • 循環(huán)結(jié)構(gòu)
      • 其他
  • 標(biāo)識符
  • 運(yùn)算符
    • 算術(shù)運(yùn)算符
    • 邏輯運(yùn)算符
    • 位運(yùn)算符
    • 關(guān)系運(yùn)算符
    • 賦值運(yùn)算符
    • 三目運(yùn)算符
    • 運(yùn)算符的優(yōu)先級
    • 分隔符
    • 標(biāo)點符號

專注于為中小企業(yè)提供網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)滎陽免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。概念

程序設(shè)計中由若干字符組成的有意義的最小語法單位

按照作用分類:關(guān)鍵字、標(biāo)識符、運(yùn)算符、分隔符、標(biāo)點符號

關(guān)鍵字(32個) 概念

關(guān)鍵字是由系統(tǒng)預(yù)定義的具有特殊功能的詞法符號

分類 存儲類型

auto
關(guān)鍵字auto用于聲明一個變量為自動變量
自動變量也稱局部變量。將不在任何類、結(jié)構(gòu)、枚舉、聯(lián)合和函數(shù)中定義的變量視為全局變量,而在函數(shù)中定義的變量視為局部變量。所有局部變量默認(rèn)都是auto,一般省略不寫。

static
普通局部變量是再熟悉不過的變量了,在任何一個函數(shù)內(nèi)部定義的變量(不加static修飾符)都屬于這個范疇。編譯器一般不對普通局部變量進(jìn)行初始化,也就是說它的值在初始時是不確定的,除非對其顯式賦值。
變量在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存空間;編譯器自動對其初始化
其作用域為局部作用域,當(dāng)定義它的函數(shù)結(jié)束時,其作用域隨之結(jié)束
extern
一種是需要建立存儲空間的。
例如:int a 在聲明的時候就已經(jīng)建立了存儲空間。
另一種是不需要建立存儲空間的,通過使用extern關(guān)鍵字聲明變量名而不定義它。
例如:extern int a 其中變量 a 可以在別的文件中定義的。
簡單總結(jié):除非有extern關(guān)鍵字,否則都是變量的定義。
register
register修飾符暗示編譯程序相應(yīng)的變量將被頻繁地使用,如果可能的話,應(yīng)將其保存在CPU的寄存器中,以加快其存儲速度。
但是使用register修飾符有幾點限制:
(1)register變量必須是能被CPU所接受的類型。
(2)不能用“&”來獲取register變量的地址。
(3)只有局部自動變量和形式參數(shù)可以作為寄存器變量,其它(如全局變量)不行。
(4)局部靜態(tài)變量不能定義為寄存器變量。不能寫成:register static int a, b, c;
(5)不能定義任意多個寄存器變量,而且某些寄存器只能接受特定類型的數(shù)據(jù)

數(shù)據(jù)類型

char、short 、int、 long 、float、double 、signed、unsigned
在這里插入圖片描述
signed對應(yīng)的即unsigned,后者意為無符號。其實說signed很常見也不見得,因為我們常用的int、short和long,以及l(fā)ong long,默認(rèn)情況下都是signed有符號的。所以相比起來unsigned的戲份可能比signed更多,signed在這里只是相當(dāng)于刻意地去說明其后面的變量是有符號類型的。
signed就是帶符號位的那種存儲方式,unsigned就是不帶符號位的那種存儲方式,且unsigned只表示非負(fù)數(shù)

構(gòu)造類型

struct、union、enum

struct
通俗來講,就是打包封裝一些有共同特征的不同數(shù)據(jù)的變量封裝在內(nèi)部,通過一定方法訪問修改內(nèi)部變量??梢哉f,結(jié)構(gòu)體是讓一些很散的數(shù)據(jù)變得很整(即井然有序)。

語法:struct 結(jié)構(gòu)體名 { 結(jié)構(gòu)體成員列表 };
struct 結(jié)構(gòu)體名 變量名
struct 結(jié)構(gòu)體名 變量名 = { 成員1值 , 成員2值…}
定義結(jié)構(gòu)體時創(chuàng)建變量

union
union,中文名“聯(lián)合體、共用體”,在某種程度上類似結(jié)構(gòu)體struct的一種數(shù)據(jù)結(jié)構(gòu),共用體(union)和結(jié)構(gòu)體(struct)同樣可以包含很多種數(shù)據(jù)類型和變量。但在“聯(lián)合”中, 各成員共享一段內(nèi)存空間, 一個聯(lián)合變量的長度等于各成員中最長的長度 。一個聯(lián)合體類型必須經(jīng)過定義之后, 才能使用它,才能把一個變量聲明定義為該聯(lián)合體類型。
當(dāng)定義結(jié)構(gòu)對象時,如果沒有顯式地初始化它們,則會采用一般初始化規(guī)則:如果該結(jié)構(gòu)對象屬于動態(tài)存儲類型,那么其成員具有不確定的初始值。如果結(jié)構(gòu)對象具有靜態(tài)存儲周期,那么其非指針成員初始值是 0,其指針成員初始值是空指針。

struct和union和區(qū)別
1.結(jié)構(gòu)和聯(lián)合都是由多個不同的數(shù)據(jù)類型成員組成的,但是在任一時刻聯(lián)合只存放一個被選中的成員,而結(jié)構(gòu)的所有成員都存在。
2。對于聯(lián)合的不同成員賦值,將會對其他成員重寫,原來成員的值就不存在了,而對結(jié)構(gòu)的不同成員賦值是會不影響的。
對聯(lián)合變量的賦值,都只能對變量的成員進(jìn)行,一個聯(lián)合變量每次只能賦值給一個成員,一個聯(lián)合變量的值就是當(dāng)前聯(lián)合變量的某一個成員值。

enum
1、標(biāo)識枚舉類型。定義枚舉類型必須用enum開頭。
2、枚舉數(shù)據(jù)表中的名字是程序員自己設(shè)定,這些名字只是一個符號。但注意命名時要提高程序的可讀性。枚舉型是一個集合,集合中的元素(枚舉成員)是一些命名的整型常量,元素之間用逗號,隔開。
3、枚舉數(shù)據(jù)表的值都是整數(shù)。第一個枚舉成員的默認(rèn)值為整型的0,后續(xù)枚舉成員的值在前一個成員上加1。也可以人為設(shè)定枚舉成員的值,從而自定義某個范圍內(nèi)的整數(shù)。
3、可以在定義類型時對枚舉常量初始化。
4、枚舉類型可以進(jìn)行比較。
5、枚舉常量不是字符串,不能用%s方式輸出字符串。
6、枚舉型是預(yù)處理指令#define的替代

選擇結(jié)構(gòu)

if、else、switch、case、default(先了解后期心情好了再更新)

循環(huán)結(jié)構(gòu)

for、while、goto、do、break、continue (先了解后期心情好了再更新)

其他

void(空類型)、typedef(重定義)、volatile(防止編譯器優(yōu)化)、const(只讀修飾、常量化)、sizeof(計算數(shù)據(jù)所占空間大小)、return(返回值) -----------(先了解后期心情好了再更新)

標(biāo)識符

標(biāo)識變量、函數(shù)或其他用戶自定義的項目名稱
遵循規(guī)則:
1.由數(shù)字、字母、下劃線組成
2.開頭不能是數(shù)字
3.不能和關(guān)鍵字重復(fù)
4.見名知義

運(yùn)算符 算術(shù)運(yùn)算符

== + - * / % ++ – ==
**/:**整數(shù)相除,向下取整
**%**只能用于整數(shù)運(yùn)算
**++:**如果++作為表達(dá)式參與運(yùn)算,要注意++的前后位置,來判斷是先運(yùn)算還是先取值。
例子
1)int b = ++a;//先自加后賦值
2)int c = a++;//先賦值后自加
3)printf("%d\n",++a);//4 ++在前,先自加后打印
4)printf("%d\n",a++);//3 ++在后,先打印后自加
5)int a=3;a++;printf("%d\n",a);//4
6)int a=3;++a;printf("%d\n",a);//4
相當(dāng)于:a=a+1;不等同于a+1

邏輯運(yùn)算符

&& || !
運(yùn)算法則:
&&(邏輯與):全真為真,一假則假
||(邏輯或):一真則真,全假則假
!(邏輯非):非真即假,非假即真
截斷法則:
邏輯與運(yùn)算中,如果前面的表達(dá)式為假,則后面的表達(dá)式不執(zhí)行
邏輯或運(yùn)算中,如果前面的表達(dá)式為真,則后面的表達(dá)式不執(zhí)行

位運(yùn)算符

& | ~ ^<< >>
&:全1則1,有0則0
|:有1則1,全0則0
^:異或
~:按位取反,0變1,1變0
.<<:左移左移幾位右邊補(bǔ)幾個0
.>>:右移
右移幾位,左邊補(bǔ)幾個符號位

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

< >>=<= == !=

賦值運(yùn)算符

= += -= *= /= %=
等號右邊賦值給等號左邊

三目運(yùn)算符

表達(dá)式1?表達(dá)式2:表達(dá)式3
運(yùn)算法則:先執(zhí)行表達(dá)式1,然后判斷表達(dá)式1是否成立,如果成立就執(zhí)行表達(dá)式2,否則就執(zhí)行

運(yùn)算符的優(yōu)先級

單目運(yùn)算符 ! ~ ++ –
算術(shù)運(yùn)算符 * / % + -
移位運(yùn)算符<< >>
關(guān)系運(yùn)算符<<= >>= == !=
位與運(yùn)算符 &
異或運(yùn)算符 ^ |
邏輯運(yùn)算符 && ||
條件運(yùn)算符 ?:
賦值運(yùn)算符 = += *= /= %= …
口訣: 單算移關(guān)與 ;異或邏條賦; 從右向左單條賦

分隔符

分號,逗號,大括號,中括號,小括號

標(biāo)點符號

換行、空格、tab

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

文章題目:C基礎(chǔ)——詞法符號(嵌入式學(xué)習(xí))-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://www.muchs.cn/article24/sphce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站制作、域名注冊網(wǎng)站維護(hù)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作