c語言數據類型的轉換
⑴ c語言數據類型如何轉換
不是有強制類型轉換嗎?
強制類型轉換 強制類型轉換
當操作數的類型不同,而且不屬於基本數據類型時,經常需要強制類型轉換,將操作數轉化為所需要的類型。強制類型轉換具有兩種形式,稱為顯式強制轉換和隱式強制類型轉換。
1、顯式強制類型轉換
顯式強制類型轉換需要使用強制類型轉換運算符,格式如下:
type(<expression>)
或
(type)<expression>
其中,type為類型描述符,如int,float等。<expression>為表達式。經強制類型轉換運算符運算後,返回一個具有type類型的數值,這種強制類型轉換操作並不改變操作數本身,運算後操作數本身未改變,例如:
int nVar=0xab65;
char cChar=char (nVar);
上述強制類型轉換的結果是將整型值0xab65的高端兩個位元組刪掉,將低端兩個位元組的內容作為char型數值賦值給變數cChar,而經過類型轉換後nVar的值並未改變。
2、隱式強制類型轉換
隱式類型轉換發生在賦值表達式和有返回值的函數調用表達式中。在賦值表達式中,如果賦值符左右兩側的操作數類型不同,則將賦值符右邊操作數強制轉換為賦值符左側的類型數值後,賦值給賦值符左側的變數。在函數調用時,如果return後面表達式的類型與函數返回值類型不同,則在返回值時將return後面表達式的數值強制轉換為函數返回值類型後,再將值返回,如:
int nVar;
double dVar=3.88;
nVar=dVar;//執行本句後,nVar的值為3,而dVar的值仍是3.88
1,若已知x,y為double類型,則表達式:x=1,y=x+3/2結果是多少啊?
因為x,y都是double型,所以執行了y=x+3/2這個語句後,會輸出小樹部分,double型默認的是小數點後幾位我忘了,你自己調試下,就會明白了!
⑵ c語言數據類型轉換
C語言算術表達式的計算,在計算過程中,每一步計算所得結果的數據類型由參與運算的運算對象決定,相同數據類型的兩個對象運算,結果數據類型不變,不同數據類型的運算對象進行運算,結果的數據類型由高精度的運算對象決定。精度的高低:double>float>int
需要注意的是,數據類型的轉換是在計算過程中逐步進行的,整個表達式結果的數據類型一定與表達式中出現的精度最高的數據相同,但是具體得到數據值是逐步得到的,例如:int x=1,y=3; double k=1573.267;
x / y * k
這個表達式計算結果的數據類型是double, 計算結果的答案是 0.0
因為在第一步 x/y 的計算中 結果是一個整型數據 0
第二步計算 0 * 1573.267 結果是一個double類型的數據,但數值是0.0
也就是說,算術表達式計算結果的數據類型與運算的優先順序沒有關系,一定具有表達式中精度最高的數據類型,但是具體得到數據結果數值,與優先順序可就有關系啦。
⑶ c語言中數據類型的轉換
真奇怪
⑷ c語言數據類型的轉換
double<float
^
long
^
unsigned
^
int<char/short
箭頭為轉換方向
C中不同數據類型間運算時默認向高精度的數據類型轉換
⑸ C語言中數據類型轉換的方式有幾種
C語言中數據類型轉換的方式有兩種:自動類型轉換,由C編譯系統自動完成。還有一種是「強制類型轉換」由程序員在代碼中明文寫清楚。
⑹ C語言中數據類型變換應該怎樣變換
隱式轉換就是不帶轉換類型的轉換,如int轉float你可以這樣子float a ;int b = 4;
a=b就是隱式轉換,而a = (float)b就是顯示轉換。區別在於當向下轉換時如果不顯示轉換就會有問題,如float a = 4.5; int b = a;這里就可能報錯,因為int可以自動上升為float,但由float不能自動轉化為int,這里就需要顯式轉換,即int b = (float)a才是最保險的;所以顯式轉換肯定不會出錯,但隱式轉換就說不定了。
⑺ 請問C語言如何實現數據類型的強制轉化
強制類型轉換
當操作數的類型不同,而且不屬於基本數據類型時,經常需要強制類型轉換,將操作數轉化為所需要的類型。強制類型轉換具有兩種形式,稱為顯式強制轉換和隱式強制類型轉換。
1、顯式強制類型轉換
顯式強制類型轉換需要使用強制類型轉換運算符,格式如下:
type(<expression>)
或
(type)<expression>
其中,type為類型描述符,如int,float等。<expression>為表達式。經強制類型轉換運算符運算後,返回一個具有type類型的數值,這種強制類型轉換操作並不改變操作數本身,運算後操作數本身未改變,例如:
int nVar=0xab65;
char cChar=char (nVar);
上述強制類型轉換的結果是將整型值0xab65的高端兩個位元組刪掉,將低端兩個位元組的內容作為char型數值賦值給變數cChar,而經過類型轉換後nVar的值並未改變。
2、隱式強制類型轉換
隱式類型轉換發生在賦值表達式和有返回值的函數調用表達式中。在賦值表達式中,如果賦值符左右兩側的操作數類型不同,則將賦值符右邊操作數強制轉換為賦值符左側的類型數值後,賦值給賦值符左側的變數。在函數調用時,如果return後面表達式的類型與函數返回值類型不同,則在返回值時將return後面表達式的數值強制轉換為函數返回值類型後,再將值返回,如:
int nVar;
double dVar=3.88;
nVar=dVar;//執行本句後,nVar的值為3,而dVar的值仍是3.88
1,若已知x,y為double類型,則表達式:x=1,y=x+3/2結果是多少啊?
因為x,y都是double型,所以執行了y=x+3/2這個語句後,會輸出小樹部分,double型默認的是小數點後幾位我忘了,你自己調試下,就會明白了!
⑻ C語言中有關數據類型的轉換的問題
恩,
可以,
double長度大於float,
不會出現截斷問題,
反過來如果將double賦給float有可能會發生截斷問題...
⑼ C語言數據類型的轉換!!規則是什麼!
題目是選B吧,定義c為float,結果也是float,編譯時一般會有警告的,不會那麼寫,題目只是想考細節,編程時會用強制轉換語法,不僅能從低精度強制轉換為高精度,也可以根據需要反過來
⑽ c語言中不同數據類型的相互轉化怎麼做
在C語言中,不同數據類型在進行運算時首先要轉換成同一類型,一種是自內動轉換,二是強容制轉換,如(int)a
將a強制轉換為int型
轉換原則:箭頭是轉換方向
char,short->int->unsigned->long,float->double
說這個題之前要接受一個事實:不同計算機上運行此程序結果會不一樣,原因和你是好多位計算機有關系,在很多書上int占兩個位元組,而在有些計算機卻佔4個位元組,具體是好多你可以用sizeof(int)測試一下,那我的計算機就佔4個位元組,現在再看題:c=x+a
x為長整型a為整型,運算之前先將a自動轉換為長整型,x=-5,計算機存儲為0FFFFFFFBh,a=3,x+a=0FFFFFFFEh
輸出格式是%u
也就是以十進制無符號形式輸出,結果為4294967294而不是65534。d=y+b,a=3就不用多說明了,最後用%f輸出單精度或雙精度浮點數,其默認為6位小數,要想控制顯示位數用%m.nf,具體看看書哈