c語言的強制轉換

2021-07-27 22:56:14 字數 1631 閱讀 3479

(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...