天天看點

c語言核心整理之資料類型,運算符,表達式和語句

1,資料類型,運算符,表達式和語句

(1)基本資料類型:整型、浮點型、指針和聚合類型(數組、結構體)

1)整型:字元、短整型、整型、長整型(都分為有符号和無符号兩種)

長整型至少應該和整型一樣長,而整型至少應該和短整型一樣長。(short int至少16位,long int至少32位,一般3個整型值都被設為32位)

頭檔案limits.h說明了各種不同的整數類型的特點:變量範圍的限制

變量的最小範圍:

char:【0到127】

signed char:【-127到127】

unsigned char:【0至255】

short int:【-32767到32767】

unsigned short int:【0到65535】

int:【-32767到32767】

unsigned int:【0到65535】

long int:【-2147483647到2147483647】

unsigned long int:【0到4294967295】

字面值(字面值常量):一個實體,指定了自身的值,并且不允許發生改變

命名常量:聲明為const的變量[const定義變量時,列印都為原數,若利用指針修改資料,隻有列印用指針形式表示的變量,變量值才會發生改變。]

寬字元常量(wchar_t)多位元組字元常量的前面有一個L   L'x'

eg:把一個字元轉換為一個二進制值

value = value - 48;

value = value - \60;

value = value - '0';

枚舉:枚舉類型就是指它的值為符号常量而不是字面值的類型(enum),這種類型的變量實際上以整型的方式存儲,這些符号名的實際值都是整型值(這裡的整型值可以改變,未顯式指定時則比前面一個符号名的值大1)。

2)浮點型:float(單精度),double(雙精度),long double(擴充精度)

頭檔案float.h表示能存儲的最大值

浮點數字面值在預設情況下都是double類型的,加L或l為long double型,加F或f為float型

3)指針:變量的值存儲于計算機的記憶體中,每個變量都占據一個特定的位置。每個記憶體位置都由位址唯一确定并引用,指針是位址的另一個名字。

指針常量

字元串常量:一串以NUL位元組結尾的零個或多個字元。(\0)/指針/數組

(2)運算符

1)算術操作符:+ - * / %

2)移位操作符:左移<< 右移>>

從左邊移入新位時,可以選擇兩種方案;

一,邏輯移位:左邊移入的位用0填充

二,算術移位:左邊移入的位由原值的符号位決定,當符号位為1時,則填充位為1,符号位為0時,填充為0.

算術左移與邏輯左移的結果都相同,隻在右移時不同(操作數為負數)。

無符号值得移位操作都是邏輯移位,有符号數根據編譯器決定。

3)位操作符:& | ^(異或)

4)指派運算:=(複合指派符)

5)單目操作符:!(邏輯反操作) ~(按位取反) ++ -- + -(産生操作數的負值) & * sizeof (類型)[強制類型轉換]

關于sizeof:sizeof(a=b+1)并沒有向a賦任何值

6)關系操作符:< > <= >= != == [筆

7)邏輯操作符:&& ||[短路求值]

8)條件操作符:?:

9)逗号操作符:逗号表達式從左至右依次執行,但結果為最後一個表達式的值。

10)下标引用、函數調用和結構成員

.和->的使用:.   左邊結構體變量

  ->  左邊結構體指針

(3)表達式

1)隐式類型轉換:整型提升

2)算術轉換:即不同類型之間的轉換

3)操作符的屬性

術語lexp表示左值表達式,rexp表示右值表達式。【左值代表一個位置,右值表示一個值,故,在使用右值的地方可以使用左值,但使用左值的地方不能使用右值】

4)優先級和求值的順序

()聚組  ()函數調用  []  .  ->  ++字尾自增  --字尾自減  !  ~  +單目,表示正值  -單目,表示負值  ++字首自增  --字首自減  *間接通路

&取位址  sizeof  (類型)  *  /  %  +  -  <<  >>  >  >=  <  <=  ==  !=  &位與  ^位異或  |  &&  ||  ?:  =  +=  -=  *=  /=  %=  <<=

>>=  &=  ^=  |=  ,      

(4)語句

1)空語句:隻有;

2)表達式語句:表達式加;

3)代碼塊:位于一對花括号之内的可選的聲明和語句清單。

4)if語句:各種類型的if 

5)while語句:while循環:循環的測試在循環體開始之前進行,一旦測試結果為假,則不執行。

break語句:用于永久終止循環,在執行完該語句之後,執行流下一條執行的語句就是循環正常結束後應該執行的語句。

continue語句:用于永久終止目前的這次循環,在執行完該語句之後,執行流接下來就是重新測試表達式的值,決定是否繼續執行循環。

6)for語句:for(初始化部分;條件部分;調整部分)

7)do語句:循環體至少執行一次。do…………while…………

8)switch語句:break語句、default子句

9)goto語句:goto語句需要加标簽,一般不使用goto語句,但它可用于跳出多層嵌套的循環,較友善。

若有錯誤,歡迎指正。

繼續閱讀