看板 C_and_CPP 關於我們 聯絡資訊
編譯器(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
Schottky: 因為你在 printf 用 %d ..... 小心點! 這樣用會出事的! 08/29 02:04
Schottky: 可以一眼看出來是因為我也出過事 XD 08/29 02:05
littleshan: undefined behavior 08/29 02:12
chuegou: printf哪裡也要轉型 08/29 08:36
Killercat: 你這想法太理所當然 沒考慮endian... XD 08/29 11:43
usanhuang: 謝謝大家的解惑 真的完全沒想到跟%d那邊有關 08/29 21:09