[英]Warning: Comparison between pointer and integer? Logic Errors?
我正在尝试编写一个使用C验证区号的程序。用户输入区号,然后程序检查该区号是否有效。 我正在用数组做到这一点。 当我运行程序并输入有效的区号时,我得到返回“无效的区号”。 我认为我的逻辑有问题。
同样在编译时我得到warning: comparison between pointer and integer
。
我该如何解决?
这是我的代码:
#include <stdio.h>
int main()
{
int codeToCheck[4] = {303, 720, 970, 719};
int codeToFind = 0;
int i = 0;
printf("Enter an area code to validate: ");
scanf("%d", &codeToFind);
for(i = 1; i <= 4; i++)
{
codeToCheck[i] = codeToFind;
if(codeToFind == codeToCheck)
break;
}
if(codeToFind == codeToCheck)
printf("\nValid Area Code in Colorado!");
else
printf("\nInvalid Area Code in Colorado");
return 0;
}
问题出在您的if(codeToFind == codeToCheck)
语句上,在这里,您正在使用数组的基地址检查整数值。
if(codeToFind == codeToCheck) //Correct comparison of array elements is codeTofind == codeToCheck[i]
同样,您的核心逻辑也不正确,在您发布的代码中, if
的条件始终为true,因为在上面的语句中, if
您要为codeToCheck[i]
分配codeToFind
值,则在下一行中,您将比较相同的值!
您可以像这样更正代码以获得正确的输出
int flag = 0;
for(i = 0; i <= 4; i++) //You should also correct this line, array indices always starts from 0
{
if(codeToFind[i] == codeToCheck)
{
flag = 1;
break;
}
}
if(flag)
printf("\nValid Area Code in Colorado!");
else
printf("\nInvalid Area Code in Colorado");
警告是由于if(codeToFind == codeToCheck)
在此处将整数与数组第一个元素的基地址进行比较。
请记住,数组的名称会衰减为其第一个元素的指针。
您的意思是在if
语句中使用codeToCheck[i]
而不是codeToCheck
:
if(codeToFind == codeToCheck[i])
同样,前一条语句的赋值将使比较始终为真。 您可能也不想这样做。
您的for
循环的边界也不正确。 您当前对i
将访问codeToCheck[4]
,这超出了限制。
试试这个=-
#include <stdio.h>
int main()
{
int codeToCheck[4] = {303, 720, 970, 719};
int codeToFind = 0;
int i = 0;
int flag=0;
printf("Enter an area code to validate: ");
scanf("%d", &codeToFind);
for(i = 0; i < 4; i++)
{
if(codeToFind == codeToCheck[i])
{flag=1;
break;
}
}
if(flag==1)
printf("\nValid Area Code in Colorado!");
else
printf("\nInvalid Area Code in Colorado");
return 0;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.