(type)
其中,type為型別描述符,如int,float等。為表示式。經強制型別轉換運算子運算後,返回乙個具有type型別的數值,這種強制型別轉換操作並不改變運算元本身,運算後運算元本身未改變,例如:
int nvar=0xab65;
char cchar=char (nvar);
上述強制型別轉換的結果是將整型值0xab65的高階兩個位元組刪掉,將低端兩個位元組的內容作為char型數值賦值給變數cchar,而經過型別轉換後nvar的值並未改變。i
結構體和陣列的強制轉換
c語言中的結構體不能直接進行強制轉換,只有結構體指標才能進行強制轉換。
例子:#include
typedef struct _nameperson;
typedef struct _testtest;
void fun(person *one)
int main()
;person *man1;
test test=;
test *test1;
//test1=(person)test; 這種強制轉換時錯誤的,必須用結構體指標轉換
test1=(person*)&test;
//test1=(void*)&test;
//或者使用void *
printf("輸出名字%s,輸出年齡%d\n",test1->name,test1->age);
}結構體和陣列的強制轉換
c語言中的結構體和陣列不能直接進行強制轉換,只有結構體指標才能進行強制轉換。
例子:#include
typedef struct _nameperson;
typedef struct _testtest;
void fun(person *one)
int main()
;person *man1;
test test=;
test *test1;
//test1=(person)test; 這種強制轉換時錯誤的,必須用結構體指標轉換
test1=(person*)&test;
//test1=(void*)&test; //或者使用void *
printf("輸出名字%s,輸出年齡%d\n",test1->name,test1->age);
}陣列強制轉換
#include
int main()
;
char b[2];
char *p;
//b=a; //這裡錯誤, 因為陣列中 強制轉換中只能用 指標進行強制轉換
p=(char*)a;
for(i=0;i<8;i++)
printf("%x\n",p[i]);
//printf("輸出名字%s,輸出年齡%d\n",test1->name,test1->age);
}
c語言的強制轉換
type 其中,type為型別描述符,如int,float等。為表示式。經強制型別轉換運算子運算後,返回乙個具有type型別的數值,這種強制型別轉換操作並不改變運算元本身,運算後運算元本身未改變,例如 int nvar 0xab65 char cchar char nvar 上述強制型別轉換的結果是...
c語言強制型別轉換
例子 include輸出結果 the char is p the short is 4464 the int is 70000 the float is 70000.000000 問題 為什麼float 型別的70000 轉成char型變成了 p 首先資料型別本質是什麼?底層硬體最小的儲存單元只有開...
C語言指標強制型別轉換
一 舉例說明 上圖對應函式呼叫為int printf const char fmt,fmt為char 指標型別,所以共佔了32位位元組,但是 fmt執行的是乙個位元組,fmt 執行的是下乙個位元組,fmt得到乙個32位位址,char fmt得到是乙個執行位元組的指標,char fmt 4後正好執行了...