1. c語言強制類型轉換問題
你好!
一步一步來
int a,b;
這句的功能是操作系統為
變數a,b分別分配一塊空閑的存儲空間
以後使用a,b將相當於訪問各自所對應的
存儲空間
a = 0000;b = Ox1234;
這句的功能是
把0000放到變數a所對應的存儲空間
把0x1234放到變數b所對應的存儲空間
重點是下面這句a = (char)(b)
它的功能相當於修改變數a的值,
具體是這樣操作的,從b所對應的存儲空間中取出
b的值即0x1234,然後把他轉換成char類型,再然後將
轉換後的結果放到變數a所對應的存儲空間,即覆蓋掉
原來的0000
這個轉換後的結果又是多少呢,是這樣算的
通常在C中int類型佔4個位元組 而char類型佔1個位元組
如果把一個int類型的數據以char類型輸出,那麼,編譯器
會自動丟棄int類型的前3個位元組的內容
對應本題
int類型的數據b是0X1234 為十六進制
在計算機中是這樣存儲的
0000 0000 0000 0000 0001 0010 0011 0100共4個位元組
轉換成char類型後,前3個位元組丟棄
即結果是0011 0100 共1個位元組 對應的十進制是52
當語句a = (char)(b)執行完後
這1個位元組的值也就是52就放到了變數a所對應的存儲空間,
而不是原來的0000了
所以,整個過程並沒有改變變數a和b的數據類型
原來是int類型現在還是int型,程序只是修改了變數a
的值,連b的值都沒有修改,因為修改a的值時只是從b所
對應的存儲空間里把b的值取出來用一用,用的結果是修改成
char類型,但他把修改後的結果放到a所對應的存儲空間了,
並沒有放到b所對應的存儲空間,所以原來b所對應的值沒有被
覆蓋,原來是0X1234,現在還是0X1234
僅供參考!呵呵
2. C語言如何轉換數據類型
c語言類型轉換分級別,一般多是:
默認狀態:低級向高級轉換,級別高低(小到大):int,float,double,(注意char只可以和int之間轉換);
若要高級向低級轉換:就要用到強制類型轉換符!如int(7.7)=7;
3. C語言中的強制轉換類型
我在VC++里運行了一下,是可以的啊
#include<stdio.h>
void main()
{
int i;
float x;
i=3;
x=(float)i;
printf("i=%d,x=%f",i,x);
}
注意一點:你的printf里有點小錯誤
4. 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語言類型強制轉換
5. C語言題 關於強制轉換類型 麻煩有詳細過程 謝謝
這個和強制類型轉換沒有啥關系。主要考察的是對指針進行++運算的時候,需要跳過的位元組數。
對一個指針進行++運算,需要跳過他本身那個類型的長度。舉個例子:
比如int *p,p++,int類型佔用4個位元組,那麼p++一次就跳過4個位元組。
比如short *p,p++,short類型佔用2個位元組,那麼p++一次就跳過2個位元組。
再看上面的題目:
char *p="abcdefgh"
long *q;
q=(long*)p;
將p強制轉換成(long*)賦值給q,即q也指向"abcdefgh"這個字元串的首地址
q++;
這個時候執行q++的話,由於long類型佔用4個位元組,那麼q就一次跳過4個位元組,就指向"efgh",跳過了「abcd」4個位元組。
r=(char*)q;
然後再將q強制轉換成(char*)賦值給r,即r指向了q指向的"efgh"這個字元串的首地址
printf("%s\n",r);
然後列印r的話,就列印的是efgh了。
6. C語言怎樣實行強制類型轉換
string s = "123";
int i = (int)s;
7. C語言下的強制類型轉換
內存中的數據和指令沒有任何區別,關鍵在於程序如何去解釋內存中的數據,你把它用作指令,它就是指令,你把它用作數據,它就是數據,這就是強制轉換的意義,建議LZ看看王爽的《匯編語言》。。
上面的應該屬於機器碼的十六進製表示方式。。
好像那段指令有問題,我運行報錯。。
8. c語言強制類型轉換
1、int a;int b;double c = (double) a;double c = (double) b;int a = (int) c;這就是一種強制轉變方法。
9. c語言中指針類型強制轉換到底怎麼寫
假設你上面的例子中a是char*類型,則:
unsigned int*p = (unsigned int*)a;
這就是將a強制轉換成unsigned int*類型。