2.7.1 表示式中的型別轉換
混合於同一表示式中的不同型別常量及變數,應均變換為同一型別的量。C語言的編譯程式將所有運算元變換為與最大型別運算元同類型。變換以一次一操作的方式進行。具體規則如下:
1)所有char及shortint型量轉為int型,所有float轉換為double。
2)如運算元對中一個為longdouble,另一個轉換為longdouble。①要不然,一個為double,另一個轉為double。②要不然,一個為long,另一個轉為long。③要不然,一個為unsigned,另一個轉為unsigned。
一旦運用以上規則。每一對運算元均變為同類型。注意,規則2)有幾種必須依次應用的條件。
圖2-1示出了型別轉換。首先,charch轉換成int,且floatf轉換成double;然後ch/i的結果轉換成double,因為f*d是double;最後由於這次兩個運算元都是double,所以結果也是double.
2.7.2構成符cast
可以透過稱為cast的構成符強迫一表達式變為特定型別。其一般形式為:
(type)expression(type)是標準C語言中的一個數據型別。例如,為確保表示式x/2的結果具有型別float,可寫為:
(float)x/2通常認為cast是運算子。作為運算子,cast是一元的,並且同其它一元運算子優先順序相同。雖然cast在程式中用得不多,但有時它的使用的確很有價值。例如,假設希望用一整數控制迴圈,但在執行計算時又要有小數部分。
若沒有cast(float),就僅執行一次整數除;有了cast就可保證在螢幕上顯示答案的小數部分。
2.7.3空格與括號
為了增加可讀性,可以隨意在表示式中插入tab和空格符。例如,下面兩個表示式是相同的。
x=10/y*(127/x);x=10/y*(127/x);
冗餘的括號並不導致錯誤或減慢表達式的執行速度。我們鼓勵使用括號,它可使執行順序更清楚一些。例如,下面兩個表示式中哪個更易讀一些呢?
x=y/2-34*temp&127;x=(y/2)-((34*temp)&127);
2.7.4C語言中的簡寫形式
C語言提供了某些賦值語句的簡寫形式。例如語句:
x=x+10;
在C語言中簡寫形式是:
:x+=10;
;
這組運算子對+=通知編譯程式將X+10的值賦予X。這一簡寫形式適於C語言的所有二元運算子(需兩個運算元的運算子)。在C語言中,
variable=variable1operatorexpression;
與variable1operator=expression相同。請看另一個例子:
x=x-100;
;
其等價語句是
x-=100;
2.7.1 表示式中的型別轉換
混合於同一表示式中的不同型別常量及變數,應均變換為同一型別的量。C語言的編譯程式將所有運算元變換為與最大型別運算元同類型。變換以一次一操作的方式進行。具體規則如下:
1)所有char及shortint型量轉為int型,所有float轉換為double。
2)如運算元對中一個為longdouble,另一個轉換為longdouble。①要不然,一個為double,另一個轉為double。②要不然,一個為long,另一個轉為long。③要不然,一個為unsigned,另一個轉為unsigned。
一旦運用以上規則。每一對運算元均變為同類型。注意,規則2)有幾種必須依次應用的條件。
圖2-1示出了型別轉換。首先,charch轉換成int,且floatf轉換成double;然後ch/i的結果轉換成double,因為f*d是double;最後由於這次兩個運算元都是double,所以結果也是double.
2.7.2構成符cast
可以透過稱為cast的構成符強迫一表達式變為特定型別。其一般形式為:
(type)expression(type)是標準C語言中的一個數據型別。例如,為確保表示式x/2的結果具有型別float,可寫為:
(float)x/2通常認為cast是運算子。作為運算子,cast是一元的,並且同其它一元運算子優先順序相同。雖然cast在程式中用得不多,但有時它的使用的確很有價值。例如,假設希望用一整數控制迴圈,但在執行計算時又要有小數部分。
若沒有cast(float),就僅執行一次整數除;有了cast就可保證在螢幕上顯示答案的小數部分。
2.7.3空格與括號
為了增加可讀性,可以隨意在表示式中插入tab和空格符。例如,下面兩個表示式是相同的。
x=10/y*(127/x);x=10/y*(127/x);
冗餘的括號並不導致錯誤或減慢表達式的執行速度。我們鼓勵使用括號,它可使執行順序更清楚一些。例如,下面兩個表示式中哪個更易讀一些呢?
x=y/2-34*temp&127;x=(y/2)-((34*temp)&127);
2.7.4C語言中的簡寫形式
C語言提供了某些賦值語句的簡寫形式。例如語句:
x=x+10;
在C語言中簡寫形式是:
:x+=10;
;
這組運算子對+=通知編譯程式將X+10的值賦予X。這一簡寫形式適於C語言的所有二元運算子(需兩個運算元的運算子)。在C語言中,
variable=variable1operatorexpression;
與variable1operator=expression相同。請看另一個例子:
x=x-100;
;
其等價語句是
x-=100;