int強制轉char型問題理解

2021-06-29 02:15:10 字數 689 閱讀 8905

#include

int main()

結果輸出是

000000f7

和fffffff7;

16進製制的0xfffffff7轉化為2進製是 1111,1111,1111,1111,1111

,1111

,1111

,0111

unsigned char i = (unsigned char)a;

int型強制轉化成char型,int型是4位元組,char型是1位元組,於是int型資料的高3位元組被截斷,於是轉化後的char型資料是1111,0111,由於是無符號char型,最高位失去符號位意義,變為資料位

,於是直接用0補齊其餘的24位,於是結果為0000,0000,0000,0000,0000,0000,1111,0111,轉化成2進製即000000f7

char *b = (char *)&a;

此處將指標b指向a所在的記憶體位址,char型指標只能指向1個位元組的資料,所以int型資料a所在的位址的高3個位元組被截斷,於是char指標現在指向的位址的資料是f7,轉化為2進製是1111,0111,最高位為1,此處指標b沒有被定義為unsigned,所以表示負數,根據符號位擴張,其餘24位用1補充,得到1111

,1111,1111,1111,

1111

,1111,1111,0111,最後將資料轉化為16進製制即為fffffff7。

char 型陣列Int型互轉

include include typedefunsignedcharuchar typedefunsignedintuint 轉換函式 temp 字元型陣列 pout int型陣列 length 字元型陣列的長度 這裡假設字元型陣列裡包含的都是偶數個元素 如果是奇數個數,則需要增加如下處理 檢查l...

如何理解char型指標與int型指標的不同表現

這裡是按照我的想法來猜測語言設計時的一些特性,如果有高人能進一步指點,不勝感激 其實一直對字串陣列與字串指標都抱有很多疑問,因為它用起來和整型指標相比完全不是乙個風格。比如char str char test 可以這樣直接賦值 而整型int a 卻完全不合理 我們可以很容易的理解int型指標,a就是...

關於int型和char型之間的轉換

我們將乙個整型變數賦值給乙個char型變數的話,就是將相應的ascii碼值的字元送入s變數 ascii碼 48 代表 0 ascii 1 代表笑臉 ascii碼 0 代表 0 於是char s 1 我們得到的將是笑臉 char s 48 我們得到 0 char s 0 我們得到 0 當我們需要得到乙...