c - 尝试将随机生成的 float 存储在数组中。但无法理解为什么数组采用垃圾值

标签 c if-statement

随机数生成正确,但当我将其存储到数组时,有时它接受垃圾值

void main()
{
    int x = 0, y = 0, i = 0;
    srand(time(NULL));
    int r = rand();
    /*Generating Random Number in Floating Point. For calculating Dimension of Rectangle*/
    srand((unsigned int)time(NULL));

    float a = 5.0, s[20], sum = 0, x_rand;
    for (i=0; i<20; i++)
    {

        x_rand = (((float)rand()/(float)(RAND_MAX)) * a) + sum;
        sum += 1.53;
        //s[i] = x_rand;
        if(i != 0)
        {
           if(x_rand>s[i-1])
                s[i] = x_rand;
        }
        else
        {
            s[i] = x_rand;
        }
        printf("%f\n", x_rand);
    }
    printf("--------------------------\n");
    for(i =0 ; i<20; i++)
        printf("%.5f\n",s[i]);
}

Output of The Program

最佳答案

在您的代码中,如果 i0,则 s[i] 保持未初始化状态。

使用更好的缩进。您的代码本质上与

相同
   if(i != 0)
   {
        if(x_rand>s[i-1])
         {
            s[i] = x_rand;
         }
         else
         {
            s[i] = x_rand;
         }
     }
     //where is else????

相关,引用 C11,第 §6.8.4.1 章

An else is associated with the lexically nearest preceding if that is allowed by the syntax.

关于c - 尝试将随机生成的 float 存储在数组中。但无法理解为什么数组采用垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40286510/

相关文章:

c - fscanf 一行读取两次

java - Java 条件表达式中 ENUM 的用法

c - 尝试在 C 目录中创建文件,但未创建文件

c - 二维数组列主序

c - 为什么 cpp 告诉我 'undefined reference to mtx_init' ?我已经包含标题

c - 打印结构指针变量成员的值

c++ - 带有类指针的 if 语句导致段错误

r - 使用 if_else,如果条件为假,我无法返回用作条件的列

javascript - if 语句中的不同字符串

c++ - 在包含 OR 运算的 IF 语句中首先计算哪个 bool 表达式?