【问题标题】:C - Passing uninitialised variables to array elements [duplicate]C - 将未初始化的变量传递给数组元素[重复]
【发布时间】:2018-12-09 10:13:45
【问题描述】:

我想知道如何处理传递给另一个变量的未初始化变量。

我正在尝试编写一个程序,在程序结束时,用户输入所有数字后,会显示最高和最低数字。

int n[5], i, small, large;

for(i=0; i < 5; i++){

    printf("Enter number: ");
    scanf("%d", &n[i]);

    if(n[i] >= large){
        large = n[i];
    }
    else if (n[i] <= small){
        small = n[i];
    }

这会产生正确的输出(表示最小的数字),但对于最大的数字,会产生一个随机数。

除了将大号初始化为 0(当输入负数时会导致程序不准确)之外,如何处理?

谢谢。

【问题讨论】:

  • 第一个输入的数字无条件初始化两个变量。

标签: c arrays loops initialization


【解决方案1】:

您必须将large 初始化为一个非常小的值,并将small 初始化为一个非常大的值。您可以使用limits.h中定义的限制

int small = INT_MAX, large = INT_MIN;

【讨论】:

    【解决方案2】:

    从概念上讲,简单的方法是将large 初始化为-Inf,将small 初始化为+Inf。由于您使用的是int 值,因此只需使用来自limits.h 的最大和最小int

    #include <limits.h>
    ...
    int n[5], i, small = INT_MAX, large = INT_MIN;
    

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 2013-02-22
      • 2022-07-19
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多