天天看點

《C語言程式設計與實踐(第2版)》——3.5 各類數值型資料間的混合運算

本節書摘來自華章出版社《c語言程式設計與實踐(第2版)》一書中的第3章,第3.5節,作者:淩雲等著,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

在c語言中,允許不同類型的資料之間進行某些混合運算。前面提到,字元型資料可以和整型通用。不僅如此,c語言還允許整型、單精度型、雙精度型、字元型的資料之間進行混合運算。例如,

《C語言程式設計與實踐(第2版)》——3.5 各類數值型資料間的混合運算

是合法的。在進行運算時,不同類型的資料要先轉換成同一類型,然後進行運算。轉換的規則如圖3-2所示。

圖3-2中橫向向左的箭頭表示必定的轉換,如字元型(char)參加運算時,不論另一個操作數是什麼類型,必定先轉換為整型(int);short型轉換為int型,單精度(float)型資料在運算時一律先轉換成雙精度(double)型,以提高運算精度(即使是兩個float型資料相加,也要先轉換成double型,然後再相加)。

《C語言程式設計與實踐(第2版)》——3.5 各類數值型資料間的混合運算

圖3-2中縱向向上的箭頭表示當運算對象為不同類型時的轉換方向。例如int型與double型資料進行運算時,應先将int型的資料轉換成double型,然後在兩個同類型(double型)資料間進行運算,結果為double型。注意:箭頭方向隻表示資料類型級别的高低,由低向高轉換,不要了解為int型先轉換成unsigned型,再轉換成long型,再轉換成double型。也就是說,如果一個int型資料與一個double型資料進行運算,那麼應直接将int型轉換成double型。同樣,如果一個int型資料與一個long型資料進行運算,那麼應直接将int型轉換成long型。

假設i 為int型,f為float型變量。運算表達式:

《C語言程式設計與實踐(第2版)》——3.5 各類數值型資料間的混合運算

,運算次序依次為:

1)進行10 + 'a'的運算,'a'自動轉換成整型97,然後執行相加,結果為整型值107。

2)進行

《C語言程式設計與實踐(第2版)》——3.5 各類數值型資料間的混合運算

的運算,首先f自動轉換成double型,然後把int型的i轉換成double型,兩個double型資料進行算術乘,結果是double型。

3)整型值107與

《C語言程式設計與實踐(第2版)》——3.5 各類數值型資料間的混合運算

的積相加。由于

《C語言程式設計與實踐(第2版)》——3.5 各類數值型資料間的混合運算

的值是double型,先将整型數107轉換成double型,然後再相加,由此最終結果為double型。

習題

3.1 寫出下面指派表達式運算後a的值,設原來的a = 10, n = 5。

《C語言程式設計與實踐(第2版)》——3.5 各類數值型資料間的混合運算

3.2 設x = 3, y = 1,下列語句執行後,m, x, y的值是多少?(各小題互相獨立)

1)m = ++x - y++;

2)m = ++x - ++y;

3)m = ++x, x++;

4)m = x++, ++x;

5)m = (++x, x++);

6)m = (x++, ++x);

7)m = ++x / ++y;

8)m = x++ / y++;

9)m = x++ / ++y;

3.3 計算出下面各邏輯表達式的值,設 int a = 3, b = 4, c = 5, x;

《C語言程式設計與實踐(第2版)》——3.5 各類數值型資料間的混合運算

3.4 請編寫程式,将"china"譯成密碼。加密方法是:把原來字母用其字典順序後面的第4個字母替換。例如,原來'a'用'e'替換,原來'a'用'e'替換。故"china"譯成密碼應為"glmre"。試編寫一個程式,用指派的方法使變量c1、c2、c3、c4、c5的值分别為'c'、'h'、'i'、'n'、'a',經過運算,使c1、c2、c3 、c4、c5的值分别為'g'、'l'、'm'、'r'、'e',并在螢幕上顯示。

3.5 若有定義:int a = 10, b = 9, c = 8;順序執行下列兩條語句後,變量c中的值是多少?

c = (a - = (b - 5));

c = (a % 11) + (b = 3);

3.6 設x和y均為int型變量,且x = 1, y = 2,則表達式1.0 + x / y的值為多少?

3.7 設y是int型變量,請寫出判斷y為偶數的關系表達式。

3.8 表示整型變量a的絕對值大于5的c語言表達式是什麼?

3.9 表示整型變量a不能被5或7整除的c語言表達式是什麼?

3.10 表示整型變量a不能同時被5和7整除的c語言表達式是什麼?

繼續閱讀