對於這個代碼:我的機器上這是否與endian-ness有關?
#include<stdio.h>
void hello() { printf("hello\n"); }
void bye() { printf("bye\n"); }
int main() {
printf("%p\n", hello);
printf("%p\n", bye);
return 0;
}
輸出:
0x80483f4
0x8048408
[第二地址是在值更大]上Codepad
0x8048541
0x8048511
[第二地址是價值較小]
這與機器的排序有什麼關係?如果沒有,
爲什麼地址排序的區別?
另外,爲什麼差異的差異?
0x8048541 - 0x8048511 =的0x30
0x8048408 - 0x80483f4 = 0x14的
順便說一句,我只是檢查。此代碼(從here拍攝)說,這兩種機器是Little-Endian
#include<stdio.h>
int main() {
int num = 1;
if(*(char *)&num == 1)
printf("Little-Endian\n");
else
printf("Big-Endian\n");
return 0;
}
字節順序與多字節數據類型中的字節順序有關。與地址無關。 (例如,這與地址的存儲方式有關。) – GManNickG 2010-05-15 06:05:22
@GMan - 拯救獨角獸:是的,我是這麼認爲的。 – Lazer 2010-05-15 06:43:10