我正在尝试编写一个程序,该程序将 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.
在您的代码中,在每个 if
和 else
block 中,您正在重新创建一个本地 array[]
,其范围是在该特定 if
/else
block 的大括号 {}
内,即 if(condition){//scope only here}
并且在大括号结束后,您将留下初始 array
,因此您的输出始终是原始顺序。
如何避免?
与其在每个 if
和 else
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/