『壹』 請問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型,那麼除數a也被先提升為double型然後參與運算。浮點運算中,除0錯誤的結果不是一個運行時異常,而是得到一個「Not A Number」的特殊浮點值作為結果
『叄』 C語言強制類型轉換表達式
強制類型轉換是把變數從一種類型轉換為另一種數據類型。
例如,如果您想存儲一個 long 類型的值到一個簡單的整型中,您需要把 long 類型強制轉換為 int 類型。您可以使用強制類型轉換運算符來把值顯式地從一種類型轉換為另一種類型。
(3)c語言強制轉換擴展閱讀:
舉例說明
使用強制類型轉換運算符把一個整數變數除以另一個整數變數,得到一個浮點數:
#include <stdio.h>int main()
{
int sum = 17, count = 5;
double mean;
mean = (double) sum / count;
printf("Value of mean : %f
", mean );
}
當上面的代碼被編譯和執行時,它會產生下列結果:
Value of mean : 3.400000
『肆』 C語言中的強制轉換類型
你要知道,c語言是一個強類型的語言,也就是說當類型不匹配的時候通常情況下不用特別說明,系統都可以自動進行轉換。
比如當你把一個字元型的變數賦給一個整形時,系統會得到該字元的asc碼值(數據在內存當中都以asc碼的二進制形式保存),然後將該值賦給整形變數。當然,必要的時候需要你自己給出轉換的方式,就是把數據轉換成什麼類型。
『伍』 C語言強制轉換
強制轉換在編寫socket的時候用的比較多,因為經常要將獲得的數據流轉換成需要的格式。也有使用ASCii傳輸的,這個不需要轉換,但是不支持中文傳輸。
其餘的時候用的也多,經常將文本框內的數值轉來轉去的。
『陸』 關於C語言強制類型轉換
當然不可以,你可以參加教材後面的有關「運算符的附錄」,了解 強制類型轉換運算符 的用法。
『柒』 C語言強制類型轉換
強制類型轉換是把變數從一種類型轉換為另一種數據類型。
例如,如果想存儲一個long類型的值到一個簡單的整型中,需要把long類型強制轉換為int類型。可以使用強制類型轉換運算符來把值顯式地從一種類型轉換為另一種類型。
發生在同一個編譯系統中,比如說把int轉化為longint,在VC++6.0裡面,longint和int都是4個位元組,不會有問題的,但是如果把int類型轉化為short類型那就裝不下了,簡而言之就是長類型不能轉化為短類型。
int類型如果要轉化為float、double、longdouble類型的時候只是末尾多了幾個0,但是反之轉化,就會出現數據的損失,小數部位都被省略掉了。
賦值中的類型轉換
當賦值運算符兩邊的運算對象類型不同時,將要發生類型轉換, 轉換的規則是:把賦值運算符右側表達式的類型轉換為左側變數的類型。
由於C語言中的浮點值總是用雙精度表示的,所以float 型數據只是在尾部加0延長為double型數據參加運算,然後直接賦值。double型數據轉換為float型時,通過截尾數來實現,截斷前要進行四捨五入操作。
以上內容參考:網路-C語言類型強制轉換
『捌』 c語言強制類型轉換
1、int a;int b;double c = (double) a;double c = (double) b;int a = (int) c;這就是一種強制轉變方法。
『玖』 c語言中有關數據類型的強制轉換
char
c
=
-3;//(fd)H
你把c強轉成unsigned就成了unsigned形式的(fd)H,也就是253(=128+64+34+16+8+4+1),因為unsigned形式只存在正數,253的unsigned
char會被強轉成long,還是253,然後就,5+4*(253)
=
1017,所以結果是1017。
還好你知道補碼,否則這問題要有得講了。