获取未使用的变量警告

Getting unused variable warning

我正在尝试编写一个程序,将 3 个整数作为输入,将这 3 个整数分配到一个数组中,然后按升序输出它们。我不知道为什么我的程序不工作,它说

unused variable 'array[]'

我也不知道为什么。我认为如果它通过 if 语句,它将以新顺序(正确的升序)创建数组。但是当我 运行 它时,它只输出我按顺序输入的 3 个整数。

int main(){

    int num1 = 0;
    int num2 = 0;
    int num3 = 0;

    scanf("%d %d %d", &num1, &num2, &num3);

    char array[] = {num1, num2, num3};

    int largestNum = numLarge(num1, num2, num3); //function gets largest number

    if (num3 == largestNum){

        if (num2 > num1){
            char array[] = {num1, num2, num3};
        }
        else{
            char array[] = {num2, num1, num3};
        }
    }
    else if (num2 == largestNum){

        if (num3 > num1){
            char array[] = {num1, num3, num2};
        }
        else{
            char array[] = {num3, num1, num2};
        }
    }
    else if (num1 == largestNum){

        if (num3 > num2){
            char array[] = {num2, num3, num1};
        }
        else{
            char array[] = {num3, num2, num1};
        }
    }


    printf("%d ", array[0]);
    printf("%d ", array[1]);
    printf("%d", array[2]);




    return 0;
}

But when I run it, it just outputs the 3 integers that I input in that order.

在您的代码中,在每个 ifelse 块中,您正在重新创建一个局部 array[],其范围在 {} 的大括号内那个特定的 if/else 块即 if(condition){//scope only here} 并且在大括号结束后你会留下初始的 array 因此你的输出总是作为原始顺序.

如何避免?

与其在每个 ifelse 块中重新创建 array,不如尝试适当地分配 num1num2num3

我的意思不是像这样:

if (num3 == largestNum){

    if (num2 > num1){
        char array[] = {num1, num2, num3};
    }
    else{
        char array[] = {num2, num1, num3};
    }

做这样的事情:

if (num3 == largestNum){

    if (num2 > num1){
         array[0] = num1; 
         array[1] = num2;
         array[2] = num3;
         //you can avoid re-assigning here as there is no change of order
    }
    else{
         array[0] = num2; 
         array[1] = num1;
         array[2] = num3;
    }

在 if-else 块中,您正在创建另一个与您在外部作用域中定义的数组同名的变量,从而将其隐藏。您所做的所有更改都是针对 if-else 中定义的本地数组,而不是您想要的。

你真正想要的是:

int main(){

int num1 = 0;
int num2 = 0;
int num3 = 0;

scanf("%d %d %d", &num1, &num2, &num3);

int array[] = {num1, num2, num3};

int largestNum = numLarge(num1, num2, num3); //function gets largest number

if (num3 == largestNum){

    if (num2 > num1){
        array[0] = num1;// This shoudl be num1 and so on.
        array[1] = num2;
        array[2] = num3;
    }
    else{
        array[0] = num2;
        array[1] = num1;
        array[2] = num3;
    }
}
else if (num2 == largestNum){

    if (num3 > num1){
        array[0] = num1;
        array[1] = num3;
        array[2] = num2;
    }
    else{
        array[0] = num3;
        array[1] = num1;
        array[2] = num2;
    }
}
else if (num1 == largestNum){

    if (num3 > num2){
        array[0] = num2;
        array[1] = num3;
        array[2] = num1;
    }
    else{
        array[0] = num3;
        array[1] = num2;
        array[2] = num1;
    }
}


printf("%d ", array[0]);
printf("%d ", array[1]);
printf("%d", array[2]);




return 0;
}