1. 程式人生 > >變數賦值(初學者)

變數賦值(初學者)

各類數值型資料之間的混合運算:變數的資料型別是可以相互轉換的。轉換的方法有兩種,一種是自動轉換,一種是強制轉換。

1、自動轉換:自動轉換髮生在不同資料型別的量混合運算時,由編譯系統自動完成的。

自動轉換遵循以下規則:(1)若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。

(2)轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。

a.若兩種型別的位元組數不同,轉換成位元組數高的型別  
b.若兩種型別的位元組數相同,且一種有符號,一種無符號,則轉換成無符號型別

(3)所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表示式,也要先轉換成double型,再作運算。

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

(5)在賦值運算中,賦值號兩邊量的資料型別不同時,賦值號右邊量的型別將轉換為左邊量的型別。如果右邊量的資料型別長度左邊長時,將丟失一部分資料,這樣會降低精度,丟失的部分按四捨五入向前舍入。

型別自動轉換的規則:char,short→int→unsigned→long→double

練習:void main()
{
 float PI=3.14159;
 int s,r=5;
 s=r*r*PI;
 printf("s=%d\n",s);
}

該程式中,PI為實型;s,r為整型,在執行s=r*r*PI語句時,r和PI都轉換成double進行計算,計算結果也為double型。但由於s為整型,故賦值結果仍為整型,捨去了小數部分。

2、強制型別轉換

強制型別轉換是通過型別轉換運算來實現的。其一般形式為:(型別說明符)(表示式),其功能是把表示式的運算結果強制轉化成型別說明符所表示的型別。例:(float) a     把a轉化為實型

注意:(1)型別說明符和表示式都必須加括號(單個變數可以不加括號)。如把(int)(x+y)寫為(int)x+y就變成了把x轉換成int型後再與y相加。

(2)無論是強制轉換還是自動轉換,都是為了本次運算的需要而臨時對變數的資料長度進行的臨時性轉換,而不改變資料說明時對該變數定義的型別。

例:程式:

#include <stdio.h> void main()
{
 printf("(int)f=%d,f=%f\n",(int)f,f);
} 可以很好的說明以上觀點。