2016-10-23 59 views
0

我试图做一个程序,需要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; 
} 
+0

为什么你使用'的char []'数组呢?你应该使用'int []'数组。 –

+0

即时通讯不知道有点新编程有没有更好的办法? –

+0

我想你知道变量是什么以及“未使用”这个词的意思。那么什么不清楚?我们是一个reno调试服务。你应该阅读[问]。 – Olaf

回答

2

但是当我运行它,它只是输出3点的整数,我输入的顺序。

在你的代码

在这里,每一个ifelse块你重新创建一个本地array[]其范围为括号内的特定if/else块即if(condition){//scope only here}{}和括号结束后您将剩下最初的array,因此您的输出始终是原始订单。

如何避免它?

而是重新创建每个ifelsearray,尽量分配num1num2 & 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; 
    } 
1

在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; 
} 
相关问题