【C語言基礎02】數據類型、變量與常量、運算符與表達式等

關於C語言的基礎知識:

   

一、C語言的所有數據類型

二、常量與變量

三、標識符和關鍵字

四、整型數在計算機中的存儲方式

五、有符號的數據類型和無符號的數據類型

六、運算符和表達式


   

一、C語言的所有數據類型

    二、常量與變量

    常量:

    常量:在程序運行過程中,其值不能改變的量成爲常量。

    類型:整型常量(int)、實型常量(float和double)、字符常量(char)、字符串常量;其中整型常量分爲短整型(short int)、長整型(long int)、無符號型(unsigned int)等。

    1. 整型常量

    都以二進制形式存儲

    ① 十進制整型常量

    ② 八進制整型常量,以數字0開頭。用合法的八進制數字表示,各位數字分別是0到7

    ③ 十六進制整型常量,以數字0和字母x(或大寫字符X)開頭,各位數字分別是0到15,其中10(A-a)、11(B-b)、12(C-c)、13(D-d)、14(E-e)、15(F-f);如0x10,0Xff,0X8

    2. 實型常量

    實型常量:即數值常量,有正負之分,只能用十進制形式表示。可以用小數形式或指數形式表示。實型常量不分單、雙精度,但可賦給一個float型或double型變量。其中,指數形式的浮點常量E或e前面必須有數字,E或e後面必須爲整數。

    3. 字符常量

    字符常量:用一對單撇號括起來的一個字符,如'a'。單撇號只是字符與其他部分的分隔符或是定界符,並不是常量的一部分

    4. 轉義字符

    有些字符和命令無法通過鍵盤直接輸入,因而借用一個符號或數字來表示。\ 是起始符。

    類型:① 字符轉義系列 ② 數字轉義系列

    3種表示方法:

    ① 反斜槓開頭後面跟一個字母代表一個控制字符;\n \t \r \b

    ② \\ 代表 \,用\’代表引號字符

    ③ 輸出不能直接從鍵盤上輸入或不能用字符常量書寫的ASCII字符;\ddd:1-3位八進制所代表的字符;\xhh:1-2位十六進制所代表的字符

    5. 字符串常量

    簡稱爲字符串。雙撇號爲定界符,不屬於字符串。

    字符串中的字符數稱爲該字符串的長度,在存儲時,系統自動在字符串的末尾加一個字符串結束表示,是轉義字符\0,即多佔一個字節,其標記作用。

    6. 符號常量

    標識符代替常量。

    #define PRICE 30,凡此後在本文件出現的PRICE都代表30,可和常量一起進行運算。

    在作用域類不能改變,也不能再被賦值。

    好處:含義清楚;一改全改。

    7. 布爾類型

    Bool是無符號的整型變量。<stdbool.h>提供了true(1)和flase(0)。

    變量:

    程序運行中可以發生變化的量。佔據一定的存儲單元,存放變量的值,保存程序運行中的輸入數據,獲得中間結果和最終結果。

    ① 變量的聲明:一個定義語句可以同時定義多個變量。可在函數體之外,也可在函數體或符合語句內。

    ② 變量的初始化:可在聲明變量的同時對其初始化;也可對聲明的變量的一部分初始化。不同類型的數據在內存佔據不同的存儲區;一種數據類型對應着一個值的範圍;一種數據類型對應着一組允許的操作,如對整型數據可進行求餘。

    先聲明語句指定變量的類型,在編譯時指定的類型分配其一定的存儲空間,並決定數據的存儲方式和允許操作的方式。

    變量定義後設計4個相關的內容:變量名、變量的存儲空間及內容、變量的地址、變量的作用域。

    三、標識符和關鍵字

    語法單位分爲六類:標識符、關鍵字、常量、字符串、運算符、分隔符。

    1. 標識符

    是給程序中的實體(變量、常量、函數、數組、結構體)以及文件所起的名字。即是一個名字,由設計者或系統指定。

規則如下:

    ① 以字母(A-Z,a-z)和下劃線“_”開頭,由字母、數字字符(0-9)和下劃線組成的字符系列。

    ② 系統使用了下劃線開頭的標識符。

    ③ 長度無規定

    ④ 區分大小寫

    原則如下:

    ① 見名知其意

    ② 變量名和函數名小寫,符號常量大寫

    ③ 避免混淆的字符

    2. 關鍵字

    由編譯程序預定義、有固定含義的、在組成結構上由小寫字母構成的標識符。又稱保留字,保留專門用途的特殊標識符。

    四、整型數在計算機中的存儲方式

    1. 內存儲器的最小存儲單位成爲“位”(bit);8個二進制位組成一個“字節”(byte);給4個字節分配一個地址,若干字節組成一個“字”(word)。用一個字來存放一條機器指令或一個數據。

    2. 最右邊的一位稱爲最低位,最左邊的一位稱爲最高位。最高位(最左邊一位)用以存放整數的符號。0位正整數,1爲負整數。

    3. 原碼

    把整數的絕對值用二進制表示,最高位用於表示符號,0是正數,1是負數。二進制位越多,表示數的範圍越大。符號不同的兩個數不能直接相加,也不能直接相減。

    4. 反碼

    正數的反碼和原碼相同。

    負數的反碼是對該數的原碼除了符號位外各位取反。

    5. 補碼

    正數的補碼和原碼相同;

    負數的補碼是在該數的反碼的最後(最右邊)一位加1。

    引入補碼後,計算機的加減運算都可用加法來實現。

    6. 正整數的原碼、反碼、補碼相同。

    求負整數的補碼步驟:

    ① 求負整數的原碼 ② 在原碼的基礎上求反碼 ③ 在反碼的基礎上加1

    五、有符號的數據類型和無符號的數據類型

    1. 在內存存儲整數時,一般用最高位(最左邊一位)表示符號。數值以補碼的形式存放。

    2. 無符號(unsigned)的整型數據,將二進制形式的最左位不作爲符號,而與右邊各位一起用來表示數值,若定義了unsigned int 只能存放正數而不能存放負數。

    3. 字符型的數據也有singed和unsigned兩種數據類型。字符型的數據佔一個字節(8位),標準的ASCII字符允許範圍0到127,用7位即可,最左邊一位補0。

    4. 實型數據沒有unsigned 和 singed之分,均帶符號

    六、運算符和表達式

    運算即對數據的加工。C語言對數據的基本操作和處理都是運算符來完成的。稱爲運算符或操作符。被運算的對象——數據稱爲運算量或操作數。

    運算符可執行對操作數的各種操作,按操作數分爲單目(一元)運算數、雙目(二元)運算符、三目(三元)運算符。

    運算符的功能:算術運算符、關係運算符、邏輯運算符、自增與自減運算符、賦值運算符、條件運算符。

    表示數組下標[]、表示函數調用()、表示順序求值,,以及類型強制轉換符(類型)。

    具體歸納如下:

    表達式:對哪些數據,以什麼順序及其施加什麼操作。

    表達式=運算符+運算符量(常量、變量、函數)

    表達式運算規則:由運算符的功能和運算符的優先級與結合性決定。將運算符分成若干組,按運算符執行先後順序爲每組規定一個等級-優先級;處於同一優先級的運算符順序稱爲運算符的結合性,從左到右或從右到左。

    1. 賦值運算符和賦值表達式

    ① 當賦值符號兩邊數據類型不同時,系統自動進行類型轉換,將賦值號右邊表達式的類型轉換爲左邊變量的類型,再賦值。

    賦值運算符的優先級僅僅高於逗號運算符,自右向左的結合性。

    算術運算符高於賦值運算符。

    有括號的堅持括號優先。

    2. 算術運算符和算術表達式

    算術運算符:+、-、*、/、%、++、--

    雙目運算符+、-、*、/的操作數可以是任何整數或浮點數;其中+、-可用於指針加或減一個整數。

    雙目運算符的兩個操作數類型可以不同,運算前遵循類型的一般算術轉換規則自動轉換成相同的類型,運算結果的類型與轉換後操作數的類型相同。

    轉換原則:值域較窄的類型向值域較寬的類型轉換。例,13.0+5=180.0-5(int)被轉換爲double;'d'-97=100 – 'd(char)'被轉換爲int;

    運算符 / :兩操作數都是整數,則執行整除數;否則,執行實數除,結果爲浮點數

    運算符 % :兩操作數必須是整數,結果也是整數,值爲左操作數除以右操作數所得的餘數

    運算符 ++、--:即可用在前綴,也可用在後綴,結構是使變量增1或減1;

    ++a前綴:先增加、減少再取值;即先自增後運算

    a++後綴:先取值,再增加、減少;即先運算後自增

    運算的結合方向是自右向左;只能用於整型變量。

    3. 長度測試符號sizeof

    測試某個類型的變量所佔用計算機內存空間的字節長度

    4. 關係運算符和關係表達式

    ① 關係運算符:即比較運算符,比較兩個運算對象值的大小

    關係運算符爲雙目運算符,方向爲從左向右;結果爲1(真)或0(假);

    算術運算符高於關係運算符

    ② 關係表達式

    關係表達式=關係運算符+運算對象+小括號組成的表達式;表達式成立返回整型值1;否則返回0。

    運算方向是從左到右:x=10>5>3;

    5. 邏輯運算符與邏輯表達式

    ① 邏輯運算符-自左向右

    優先級次序:邏輯非>算術運算>關係運算>邏輯與>邏輯或>賦值運算

    ② 邏輯表達式

    用邏輯運算符將關係表達式連接起來構成邏輯表達式。

    對象可是C語言中任意合法的表達式。

    結果爲1(真)、0(假)

    非0數都爲真。

    特性:必需執行下一個表達式才能求解時,才求該表達式;並不是所有的表達式都被求解。

    &&:前一個表達式爲假(0),都爲假(0);

    ||:前一個表達式爲真(1),都爲真(1);

    6. 條件運算符與條件表達式

    條件運算符 ? 是C語言提供唯一一個三目運算符。

    執行順序:先求解表達式1,若爲1,再求解表達式2,則該表達式的值就爲整個表達式的值;

    若表達式1的值爲0,則求解表達式3,則該表達式的值就爲整個表達式的值。

    格式:表達式1?表達式2:表達式3

    條件運算符的優先級別僅僅高於賦值運算符,低於關係運算符和算術運算符。

    結合方向:自右向左,例a>b?a:c>d?c:d;等價於 a>b?a:(c>d?:c:d);

    7. 逗號運算符與逗號表達式

    即順序求值運算符。

    從左向右依次計算表達式1,扔掉表達式1的值,再計算表達式2。

    逗號表達式可以和另外一個表達式組成一個新的逗號表達式;

    在變量和函數表中逗號起間隔符作用;

    逗號表達式是將各個表達式串聯起來

    8. 位運算

    對運算對象按照二進制位進行操作,對字節或字中的實際位進行檢測、設置、位移

    運算對象只能是字符型或整型變量及它們的變體。

    ① 按位取反(~):對二進制按位取反,1變0,0變1

    ② 按位與(&):參加運算的兩個數據,按照二進制位進行&運算,如兩個相應的二進制都爲1,則該位的結果爲1,否則爲0

    功能:清0;全部二進制位爲0,條件:原數中爲1的位,新數中爲0;

    取一個數中的某些指定位;如取高字節、或低字節

    ③ 按位或|;一個爲1即爲1;某一個數據的某些特殊位置,低8位與高8位

    ④ 按位異或^。判斷兩個相應位的值是否不同,不同爲1,否則爲0。

    功能:特定位反轉;與0相異或保留原值;不用中間變量就可交換兩個數的值

    ⑤ 左移<< ,乘法,移位後,右端出現的空位補0,移出左端之外舍棄

    ⑥ 右移>>,除法,二進制位右移2位,右端低位捨棄,高位補0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章