C使用運算符來表達算術運算。每個運算符的特性包括所需操作數的數量、優先級和結合性。當兩個運算符共享一個操作數時,最後兩個特性決定了先應用哪一個運算符。
5.1.1 賦值運算符: =
例如: bmw=2002; 符號=的左邊是一個變量名,右邊是賦給該變量的值。應該讀為“將值2002賦給變量bmw”。賦值運算符的動作是從右到左。
不能將一個值賦給一個常量,賦值運算符的左邊應該是一個可修改的左值。實際上,左式必須指向一個存儲位置。
C90標准將一元+運算符加進了C中,這個運算符不改變它的操作數的值或符號。因此可以使用dozen=+12;
幾個術語
數據對象:泛指數據存儲區的術語,數據存儲區能用於保存值。
左值:標識一個特定的數據對象的名字或表達式。
5.1.2 除法運算符: /
當您對整數與浮點數進行混合運算時,結果是浮點數。
捨入過程采用小於或等於該浮點數的最大整數。C99要求使用“趨零截尾”,所以應把-3.8轉換成-3。
5.1.3 取模運算符: %
5.1.4 增量和減量運算符: ++和--
使用它的好處,使程序代碼簡潔,另一個優點是它通常產生更高效的機器語言代碼。
aplus=a++;//先將a的值賦給aplus,a再增加1。
aplus=++a;//先將a增加1,再將a的值賦給aplus。
優先級
幾個注意事項
如果一個變量出現在同一個函數的多個參數中時,不要將增量或者減量運算符用於它上面。
當一個變量多次出現在同一個表達式裡時,不要將增量或者減量運算符用於它上面。
5.2.1 表達式和語句
語句是構造程序的基本成分,程序是由一系列帶有某種必需的標點的語句集合。
例如 legs=4是一個表達式 legs=4;是一個語句。
5.2.2 順序點
在C中,語句裡的分號標志了一個順序點。它意味著在一個語句中賦值運算符,增量運算符以及減量運算符所做的全部改變必須在程序進入下一個語句前發生。
5.2.3 復合語句
整個復合語句被認為是一個語句。
縮排對編譯器不起作用,但可以為讀者指明程序的結構。
在K&R C下,float將自動轉換為double。
在包含兩種數據類型的任何運算裡,兩個值都被轉換為兩種類型裡較高的級別。
在賦值語句裡,計算的最後結構被轉換成將要被賦予值的那個變量的類型。
當作為函數的參數傳遞時,char和short類型將自動轉換為int,float將自動轉換為double。