[問題] int array 轉 double point

看板C_and_CPP (C/C++)作者 (呱呱)時間8年前 (2017/08/29 01:59), 編輯推噓2(204)
留言6則, 5人參與, 最新討論串1/2 (看更多)
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) Dev C 問題(Question): 剛剛看到一個有點想不通的問題 void Test() { int array[]={1,2,3,4,5}; double* a = (double*) (&array[0]); printf("%d\n",*a); printf("\n"); } address value ______ | | 732 | 4 | |______| | | 728 | 3 | |______| | | 724 | 2 | |______| | | a--> 720 | 1 | <--- array |______| 因int size = 4, double size = 8 且a指向的type為double 所以應該是要吃到 0x200000001 (address 720~728) 但印出的結果卻是 1 腦袋有點想不太通 懇請大家賜教 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.57.130 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1503943140.A.F27.html

08/29 02:04, , 1F
因為你在 printf 用 %d ..... 小心點! 這樣用會出事的!
08/29 02:04, 1F

08/29 02:05, , 2F
可以一眼看出來是因為我也出過事 XD
08/29 02:05, 2F

08/29 02:12, , 3F
undefined behavior
08/29 02:12, 3F

08/29 08:36, , 4F
printf哪裡也要轉型
08/29 08:36, 4F

08/29 11:43, , 5F
你這想法太理所當然 沒考慮endian... XD
08/29 11:43, 5F

08/29 21:09, , 6F
謝謝大家的解惑 真的完全沒想到跟%d那邊有關
08/29 21:09, 6F
文章代碼(AID): #1Pf5dayd (C_and_CPP)
文章代碼(AID): #1Pf5dayd (C_and_CPP)