[問題] 指標與字元轉換問題

看板C_and_CPP作者 (芒果冰)時間14年前 (2011/10/12 22:47), 編輯推噓0(0010)
留言10則, 3人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) vc++ *[36m問題(Question):*[m 我認為c=2 但是結果是 c=1245081 c=(int*)b 看不太懂 應該是把b設定為原本是char的指標改成指向int的指標吧?? 程式碼(Code):(請善用置底文網頁, 記得排版) char a[6]={0,1,2,3,4,5}; char *b; int *c; b=a; b+=2; c=(int*)b; printf("%d",c); 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.167.35.60

10/12 22:48, , 1F
你要考慮int跟char的大小不一樣
10/12 22:48, 1F

10/12 22:52, , 2F
不過 c=1245081 這個結果還挺怪異的...
10/12 22:52, 2F

10/12 22:54, , 3F
最後的 printf("%d",c); 你要印的是 c 還是 *c?
10/12 22:54, 3F

10/12 23:05, , 4F
如果改成printf *c 結果是84148994
10/12 23:05, 4F

10/12 23:06, , 5F
84148994 =(00000101 00000100 00000011 00000010)= 5432
10/12 23:06, 5F

10/12 23:09, , 6F
(00000101 00000100 00000011 00000010) 是他的二進位嗎?
10/12 23:09, 6F

10/12 23:09, , 7F
是啊,你把 84148994 貼到小算盤換算一下,或者手算也行
10/12 23:09, 7F

10/12 23:18, , 8F
所以(char 數字) 轉換成int 不一定是數字? 因為位元不同嗎?
10/12 23:18, 8F

10/12 23:21, , 9F
我覺得等一下應該會有好人t大貼個圖文並茂的說明...
10/12 23:21, 9F

10/12 23:45, , 10F
推好人t大
10/12 23:45, 10F
文章代碼(AID): #1EbQXtFK (C_and_CPP)
文章代碼(AID): #1EbQXtFK (C_and_CPP)