c語言強制轉換

2021-07-27 22:43:24 字數 1443 閱讀 4300

(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後正好執行了...