C語言-基礎(chǔ)教程-C語言表達式

字號:

表達式由運算符、常量及變量構(gòu)成。C語言的表達式基本遵循一般代數(shù)規(guī)則,有幾點卻是與C語言緊密相關(guān)的,以下將分別加以討論。
    2.7.1 表達式中的類型轉(zhuǎn)換
    混合于同一表達式中的不同類型常量及變量,應(yīng)均變換為同一類型的量。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)有幾種必須依次應(yīng)用的條件。
    圖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è)希望用一整數(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);
    冗余的括號并不導(dǎo)致錯誤或減慢表達式的執(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īng)用于專業(yè)C語言程序中,希望讀者能熟悉它。