使用数组生成序列?

时间:2014-02-13 21:24:18

标签: c arrays

我正在尝试从2到N获取整数列表,但是我得到了一个奇怪的输出。

代码:

#define N 10

int main(int argc, char *argv[]) {

    int array[N]={2-N};
    for(int i=0;i<N;printf("%d ",array[i]), i++);
}

输出:

-8 0 0 0 0 0 0 0 0 0 

我想把它读成:2,3,4,5,6,7,8,9,10

有什么想法吗?提前致谢

4 个答案:

答案 0 :(得分:2)

本声明

int array[N]={2-N};

将数组的第一个元素设置为2-N,而N设置为8,将其设置为-8。其他元素未定义,但恰好为零。

你想要像

这样的东西
for (int i = 0; i < N; i++)
    array[i] = i+2;

答案 1 :(得分:0)

N为10,2-N为-8。这就是为什么第一个数组元素是-8。

其他数组元素为0,因为它们未显式初始化,因此默认情况下初始化为0.

您可以将其初始化为

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

https://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Faryin.htm

答案 2 :(得分:0)

printf语句放入循环本身,正确。

答案 3 :(得分:-1)

int array[N]={2-N};  

将初始化数组的第一个元素,即array[0]-8,其余部分隐式初始化为0(看看here)。所以,你得到了正确的输出 要将数组从2初始化为N,您需要使用for循环:

for (int i = 0; i < N; i++)
    array[i] = i+2;