【问题标题】:initializing an array using for loop with value of final array element as condition (in C)使用 for 循环以最终数组元素的值作为条件初始化数组(在 C 中)
【发布时间】:2020-09-03 17:19:55
【问题描述】:

我希望这段代码能打印出来

0 1 2 3 4 5 6 7 8 9

但它只打印数组的前两个元素:

0 1

我意识到我可以将 for 循环中的条件更改为 i

谢谢!

代码:

#include <stdio.h>

int main()
{

    int array[10];

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

}

【问题讨论】:

    标签: c arrays for-loop


    【解决方案1】:

    你真正想要的 for 循环是

    for(int i = 0; i < 10; i++)
    

    按照您现在的方式,您正在检查array[i] 的值,然后再给它一个值,这意味着它的值是您的函数开始时堆栈上的任何垃圾内存。

    【讨论】:

      【解决方案2】:

      您的数组未初始化,因此它包含的值是不确定。无法保证未初始化的值将包含任何特定值,实际上读取的值可能会在后续读取时发生变化。

      如果你想要有意义的结果,数组的元素需要先用一些值初始化,然后才能读取它们。

      【讨论】:

        【解决方案3】:

        在您的代码中,您正在查看的数组元素未初始化,并且包含垃圾。您可以检查在上一次迭代中初始化的值,如下所示:

        #include <stdio.h>
        
        int main()
        {
        
            int array[10];
            array[0]=0;
           printf("%d ", array[0]);
            for(int i = 1; array[i-1] < 9; i++)
            {
                array[i] = i;
                printf("%d ", array[i]);
        
            }
        
        }
        

        我已对您的代码进行了一些更改,请尝试一下。如果有人有任何建议或更正,请发表评论。

        【讨论】:

          猜你喜欢
          • 2014-05-24
          • 2013-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-28
          • 1970-01-01
          相关资源
          最近更新 更多