Pardon, je pourri mon topic avec un HS, juste histoire d'héberger la topho.
Voici le source en VB6.
Dim AnInteger(0 To 4) As Integer
Dim AnLong(0 To 4) As Long
Dim nI As Long
For nI = 0 To 4
AnInteger(nI) = nI
Next nI
For nI = 0 To 4
AnLong(nI) = nI
Next nI
A la fin de ce code, les deux tableaux contiennent leurs indexes.
Voici une impression d'écran de la mémoire juste à la fin de l'éxecution de ce code :
La colonne de gauche, c'est les adresses (Je les ai récupérées comme variables locales dans la pile).
Le tableau d'integer commence en 0014DB50 (et fini en 0014DB5A).
Le tableau de long commence en 00150208 (et fini en 0015021C).
J'ai déssiné le trait rouge pour bien délimiter les tableaux.
Les autres colonnes représente le contenu de la mémoire.
Chaque colonne fait 4 chiffres hexa de large, c'est à dire 16 bits (C'est configurable).
On voit bien les 0, 1, 2, 3 et 4 dans les deux tableaux.
C'est un peu plus compliqué pour le long: on dirait que le tableau contient par exemple 00010000 au lieu de 1.
Mais c'est uniquement la faute du petit indien (little indian).
Le moins que l'on puisse dire c'est que celui de long prend deux fois plus de place que celui d'integer.
Outre l'aspect visuel, on peut faire le calcul avec les adresses :
0h0014DB5A - 0h0014DB50 = 10
10 * 8 = 80 bits (= 5 * 16)
0h0015021C - 0h00150208 = 20
20 * 8 = 160 bits (= 5 * 32)
Bon, cette fois, si tu n'est toujours pas persuadez, j'y peut plus rien...