初始化数组是否在C / C ++和类似语言中保留其顺序?

时间:2016-03-23 13:24:56

标签: java c++ c arrays programming-languages

假设我在C / C ++中有一个数组:

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

与Java相同:

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

与其他编程语言中的等价物。

是否保证元素始终与我在初始化时输入的顺序相同?例如:1, 2, 3, 4, 5, 6, 7, 8, 9, 10

注意:我已经问过{编程语言的this question,我知道这是真的。但我想知道这种行为是否适用于任何(或大多数)编程语言,我不确定编辑是否是最好的方式。

2 个答案:

答案 0 :(得分:6)

让我们听听C的创作者对此有何看法:

  

可以通过使用列表声明数组来初始化数组   用括号括起来并用逗号分隔的初始化程序。对于   例如,使用每个天数来初始化数组天数   月:
int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }   
当省略数组的大小时,编译器将计算   通过计算初始化器的长度,其中有12个   案件。如果数组的初始值设定项少于指定的初始值设定项   大小,其他对于外部,静态和自动将为零   变量。拥有太多初始值设定项是错误的。
没有   指定初始化程序重复的方法,也不能初始化   数组中间的元素,不提供前面的所有内容   价值观也是如此。
字符数组是初始化的特例;   可以使用字符串代替大括号和逗号表示法:
char pattern = "ould";是较长但速度相同的简写
char pattern[] = { 'o', 'u', 'l', 'd', '\0' };在这种情况下,数组大小   是五(四个字符加上终止' \ 0')。

C BY BRIAN W KERNIGHAN& DENNIS M RITCHIE,第二版,第95页。

答案 1 :(得分:2)

  

两种情况都是一样的

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

它只会做

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

语言int[] array的语言与java的理想选择是理想的,只是为了方便程序int array[]