C語言程序設計譚浩強版 四

3.6  變量賦初值


語言程序中可有多種方法爲變量提供初值。本小節先介紹在作變量定義的同時給變量賦以

初值的方法。這種方法稱爲初始化。變量初始化不是在編譯階段完成的,而是在程序運行

時執行本函數時賦予初值的。

在變量定義中賦初值的一般形式爲:類型說明符變量1= 值1,變量2= 值2,……;

例如: int a=3;

            int b,c=5;

            float x=3.2,y=3f,z=0.75;

            char ch1='K',ch2='P';

應注意,在定義中不允許連續賦值,如a=b=c=5是不合法的。


3.7 各類數值型數據之間的混合運算


變量的數據類型是可以轉換的。轉換的方法有兩種,一種是自動轉換,一種是強制轉換。

自動轉換遵循以下規則:

1) 、若參與運算量的類型不同,則先轉換成同一類型,然後進行運算。

2)、轉換按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,

         先把int量轉成long型後再進行運算。

3) 、所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,

        也要先轉換成double型,再作運算。

4) 、char型和short型參與運算時,必須先轉換成int型。

5) 、在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換爲

        左邊量的類型。如果右邊量的數據類型長度比左邊長時,將丟失一部分數據,這

        樣會降低精度,丟失的部分按四捨五入向前舍入。

下圖表示了類型自動轉換的規則:

<span style="font-size:18px;">#include<stdio.h>
/* 數據類型的自動轉換 */
int main(void)
{
	float PI = 3.14159;
	int s,r = 5;
	s = r * r * PI;
	printf("%d\n",s);
}
</span>


本例中,計算S的時候需要將r和PI都轉換爲double型,但是由於s是整型,所以輸出的

時候捨棄小數部分,直接輸出整數78,不是四捨五入。


強制類型轉換


其一般形式爲: (類型說明符) (表達式)

例如: (float) a 把a轉換爲實型                (int)(x+y) 把x+y的結果轉換爲整型

在使用強制轉換時應注意以下問題:

1) 、類型說明符和表達式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫成

        (int)x+y則成了把x轉換成int型之後再與y相加了。

2) 、無論是強制轉換或是自動轉換,都只是爲了本次運算的需要而對變量的數據長度

        進行的臨時性轉換,而不改變數據說明時對該變量定義的類型。


下面我們舉個例子來說明一下強制轉換數據類型


<span style="font-size:18px;">#include<stdio.h>
/* 強制類型轉換 */
int main(void)
{
	float f = 5.75;
	printf("(int)f = %d,f = %f\n",(int)f,f);
}</span>


輸出結果爲:(int) f = 5,f = 5.750000


本例表明,f雖強制轉爲int型,但只在運算中起作用,是臨時的,而f本身的類型並

不改變。因此,(int)f的值爲5(刪去了小數)而f的值仍爲5.75。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章