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