我正在尝试从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
有什么想法吗?提前致谢
答案 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};
答案 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;