表達式由運算符、常量及變量構(gòu)成。C語言的表達式基本遵循一般代數(shù)規(guī)則,有幾點卻是與C語言緊密相關的,以下將分別加以討論。
2.7.1 表達式中的類型轉(zhuǎn)換
混合于同一表達式中的不同類型常量及變量,應均變換為同一類型的量。C語言的編譯程序?qū)⑺胁僮鲾?shù)變換為與最大類型操作數(shù)同類型。變換以一次一操作的方式進行。具體規(guī)則如下:
1)所有char及shortint型量轉(zhuǎn)為int型,所有float轉(zhuǎn)換為double。
2)如操作數(shù)對中一個為longdouble,另一個轉(zhuǎn)換為longdouble。①要不然,一個為double,另一個轉(zhuǎn)為double。②要不然,一個為long,另一個轉(zhuǎn)為long。③要不然,一個為unsigned,另一個轉(zhuǎn)為unsigned。
一旦運用以上規(guī)則。每一對操作數(shù)均變?yōu)橥愋?。注意,?guī)則2)有幾種必須依次應用的條件。
圖2-1示出了類型轉(zhuǎn)換。首先,charch轉(zhuǎn)換成int,且floatf轉(zhuǎn)換成double;然后ch/i的結(jié)果轉(zhuǎn)換成double,因為f*d是double;最后由于這次兩個操作數(shù)都是double,所以結(jié)果也是double.
2.7.2構(gòu)成符cast
可以通過稱為cast的構(gòu)成符強迫一表達式變?yōu)樘囟愋?。其一般形式為?br /> (type)expression(type)是標準C語言中的一個數(shù)據(jù)類型。例如,為確保表達式x/2的結(jié)果具有類型float,可寫為:
(float)x/2通常認為cast是操作符。作為操作符,cast是一元的,并且同其它一元操作符優(yōu)先級相同。雖然cast在程序中用得不多,但有時它的使用的確很有價值。例如,假設希望用一整數(shù)控制循環(huán),但在執(zhí)行計算時又要有小數(shù)部分。
若沒有cast(float),就僅執(zhí)行一次整數(shù)除;有了cast就可保證在屏幕上顯示答案的小數(shù)部分。
2.7.3空格與括號
為了增加可讀性,可以隨意在表達式中插入tab和空格符。例如,下面兩個表達式是相同的。
x=10/y*(127/x);x=10/y*(127/x);
冗余的括號并不導致錯誤或減慢表達式的執(zhí)行速度。我們鼓勵使用括號,它可使執(zhí)行順序更清楚一些。例如,下面兩個表達式中哪個更易讀一些呢?
x=y/2-34*temp&127;x=(y/2)-((34*temp)&127);
2.7.4C語言中的簡寫形式
C語言提供了某些賦值語句的簡寫形式。例如語句:
x=x+10;
在C語言中簡寫形式是:
:x+=10;
;
這組操作符對+=通知編譯程序?qū)+10的值賦予X。這一簡寫形式適于C語言的所有二元操作符(需兩個操作數(shù)的操作符)。在C語言中,
variable=variable1operatorexpression;
與variable1operator=expression相同。請看另一個例子:
x=x-100;
;
其等價語句是
x-=100;
簡寫形式廣泛應用于專業(yè)C語言程序中,希望讀者能熟悉它。
C語言表達式
標簽:c語言