Pour ce code:Cela a-t-il quelque chose à voir avec 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;
}
sortie sur ma machine:
0x80483f4
0x8048408
[deuxième adresse est plus grande valeur]
sur Codepad
0x8048541
0x8048511
[deuxième adresse est plus petite valeur]
Est-ce que cela a quelque chose à voir avec l'endianité des machines? Dans le cas contraire,
Pourquoi la différence dans l'ordre des adresses?
Aussi, pourquoi la différence dans la différence?
0x8048541 - 0x8048511 = 0x30
0x8048408 - 0x80483f4 = 0x14
BTW, je viens de vérifier. Ce code (extrait de here) dit que les deux machines sont 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;
}
L'endianité concerne l'ordre des octets dans un type de données multi-octets. Rien à voir avec les adresses. (Il s'agirait de la façon dont ces adresses sont stockées, par exemple.) – GManNickG
@GMan - Save the Unicorns: oui, je le pensais. – Lazer