c - 获取未使用的变量警告

标签 c arrays gcc-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 block 中,您正在重新创建一个本地 array[],其范围是在该特定 if/else block 的大括号 {} 内,即 if(condition){//scope only here} 并且在大括号结束后,您将留下初始 array,因此您的输出始终是原始顺序。

如何避免?

与其在每个 ifelse block 中重新创建 array,不如尝试分配 num1, num2 & num3 适当

我的意思不是像这样:

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;
    }

关于c - 获取未使用的变量警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40205833/

相关文章:

arrays - `t(sites)` 对 presto 查询意味着什么?

c++ - [[maybe_unused]] 在 if 语句中似乎在 GCC 中不起作用

c - 带有 gcc 编译器的 UDP recvfrom 警告

对使用 gcc 收到的编译器错误感到困惑

c - C 文件如何包含在 freeSwitch(一种调用框架)中?

c - C 中的函数操作码

c - strstr 的优化版本(搜索具有恒定长度)

c - 如何横向字符串的数字,然后分配给变量

C++ - SetUnion 函数的字符串数组参数

arrays - Angular 2 TS对象数组仅在订阅服务时定义