- 相關推薦
C語言類型轉換的方法
C語言是一門面向過程的計算機編程語言,與C++、C#、Java等面向對象編程語言有所不同。下面是小編帶來的C語言類型轉換的方法,希望對你有幫助。
我們在編程序的時候,經常會出現不同類型的數據之間需要計算、賦值,必然會出現類型轉換問題。C語言的變量數據類型是可以轉換的,轉換的方法有兩類,一種是自動轉換,一種是強制轉換。
自動轉換
這種轉換發(fā)生在不同數據類型的量混合運算或賦值時,由編譯系統(tǒng)自動完成。自動轉換遵循以下規(guī)則:
1、若參與運算量的類型不同,則先轉換成同一類型,然后進行運算。
2、轉換時按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型后再進行運算。
3、所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉換成double型,再作運算。
4、char型和short型參與運算時,必須先轉換成int型。
5、在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊量的數據類型長度左邊長時,將丟失一部分數據,這樣會降低精度,丟失的部分按四舍五入向前舍入。
強制類型轉換
強制類型轉換是通過類型轉換運算來實現的,形式為在要轉換的數值或者表達式前用小括號將要類型括起來。比如要將double類型的數據強制轉換為int型:
double d = 1.234;
float f = 5.678;
int i = (int)d;
也可以是整個表達式的轉換:
long l = (long)(d + f);
在使用強制轉換時應注意以下問題:
1、類型說明符和表達式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之后再與y相加了。
2、無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變量的數據長度進行的臨時性轉換,而不改變數據說明時對該變量定義的類型,也就是被強制轉換的變量或表達式本身還是原來的類型。
拓展閱讀
C語言指針變量的類型
對指針變量的類型說明包括三個內容:
(1)指針類型說明,即定義變量為一個指針變量;
(2)指針變量名;
(3)變量值(指針)所指向的變量的數據類型。
其一般形式為: 類型說明符 *變量名;
其中,*表示這是一個指針變量,變量名即為定義的指針變量名,類型說明符表示本指針變量所指向的變量的數據類型。
例如: int *p1;表示p1是一個指針變量,它的值是某個整型變量的地址。 或者說p1指向一個整型變量。至于p1究竟指向哪一個整型變量, 應由向p1賦予的地址來決定。
再如:
staic int *p2; /*p2是指向靜態(tài)整型變量的指針變量*/
float *p3; /*p3是指向浮點變量的指針變量*/
char *p4; /*p4是指向字符變量的指針變量*/ 應該注意的是,一個指針變量只能指向同類型的變量,如P3 只能指向浮點變量,不能時而指向一個浮點變量, 時而又指向一個字符變量。
指針變量的賦值
指針變量同普通變量一樣,使用之前不僅要定義說明, 而且必須賦予具體的值。未經賦值的指針變量不能使用, 否則將造成系統(tǒng)混亂,甚至死機。指針變量的賦值只能賦予地址, 決不能賦予任何其它數據,否則將引起錯誤。在C語言中, 變量的地址是由編譯系統(tǒng)分配的,對用戶完全透明,用戶不知道變量的具體地址。 C語言中提供了地址運算符&來表示變量的地址。其一般形式為: & 變量名; 如&a變示變量a的地址,&b表示變量b的地址。 變量本身必須預先說明。設有指向整型變量的指針變量p,如要把整型變量a 的地址賦予p可以有以下兩種方式:
(1)指針變量初始化的方法 int a;
int *p=&a;
(2)賦值語句的方法 int a;
int *p;
p=&a;
不允許把一個數賦予指針變量,故下面的賦值是錯誤的: int *p;p=1000; 被賦值的指針變量前不能再加“*”說明符,如寫為*p=&a 也是錯誤的
【C語言類型轉換的方法】相關文章:
C語言基礎之數據類型轉換09-23
C語言的枚舉類型知識07-22
C語言的reduce方法應用10-22
C語言的冒泡排序方法08-22
C++類的轉換10-17
Java程序調用C/C++語言函數的方法07-31
C語言返回多個值的方法07-07
Java數據類型轉換08-04
Java中float類型的范圍及其與十六進制的轉換方法06-18
C語言入門的基本學習方法09-29