(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語言指標的強制轉換
在c語言中經常看到以下類似的 int x 1 char x 這樣的形式的 這個裡面就涉及乙個型別轉換的問題。以下是在vc6.0中除錯的結果 int main int argc,char agrv 輸出 有些人可能會對printf char num 1 p n char num 1 輸出的結果感到不可...
關於C語言的強制轉換
程式設計時遇到此類報錯 error aggregate value used where an integer was expected printf t1 d n unsigned char t1 原因是 c語言的型別強制轉換只有在數量型別之間才能進行轉換,結構型別 包括 union,struct...