2016-03-23 2 views
2

dire que j'ai un tableau en C/C++:Est-ce qu'un tableau initialisé conserve son ordre en C/C++ et des langages similaires?

int myArray[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 

même en Java:

int[] myArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 

Et l'équivalent dans d'autres langages de programmation.

Est-il garanti que les éléments seront toujours dans le même ordre que j'ai tapé lors de l'initialisation? E.g .: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.


Note: J'ai déjà demandé this question spécifique au langage de programmation Java et je sais qu'il est vrai. Mais je me demande si ce comportement est une règle pour l'un (ou la plupart des) langages de programmation, et je ne savais pas si une modification était la meilleure façon de le demander.

+0

Oui, c'est garanti (pour autant que je sache) – DimChtz

+7

Il serait très difficile de programmer dans une langue où cela n'était pas garanti. –

+0

En effet, il le ferait. Bon point. – Mauker

Répondre

6

nous permettent d'entendre ce que les créateurs de C ont à dire à ce sujet:

Un tableau peut être initialisés en suivant sa déclaration une liste des initialisations entre accolades et séparés par des virgules. Pour exemple, pour initialiser un jour de tableau avec le nombre de jours dans chaque mois:
int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
Lorsque la taille du tableau est omis, le compilateur calcule la longueur en comptant les initialiseurs, dont il existe 12 cet cas. S'il y a moins d'initialiseurs pour un tableau que la taille spécifiée, les autres seront zéro pour les variables externes, statiques et automatiques. C'est une erreur d'avoir trop d'initialiseurs.
Il n'existe pas de méthode pour spécifier la répétition d'un initialiseur, ni pour initialiser un élément au milieu d'un tableau sans fournir également toutes les valeurs précédentes.
Les tableaux de caractères sont un cas particulier d'initialisation;
char pattern = "ould"; est un raccourci pour le plus long mais équivalent
char pattern[] = { 'o', 'u', 'l', 'd', '\0' }; Dans ce cas, la taille du tableau est cinq (quatre caractères plus le '\ 0' de terminaison).

C BRIAN W KERNIGHAN & DENNIS M RITCHIE, deuxième édition, page 95.

+1

Si vous citez, veuillez indiquer exactement ce que vous citez. – SergeyA

+0

thx, j'étais sur le point de mais j'ai oublié. –

2

Il sera même dans les deux cas

int[] myArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

Il me contenterai faire

int[0] = 1 
int[1] = 2 
. 
. 
. 
int[9] = 10 

Il ne variera pas à la langue à la langue int[] array est idéal en java juste pour la commodité du programme int array[] est autorisé.