> warning: comparison between pointer and integer
当我尝试编译以下代码时,出现上述错误。我意识到这个问题很常见,而且我确实找到了很多对我有帮助的资源,但我不打算找到带有 #define 和 argv[] 的资源。不过,如果这是重复的,我们深表歉意。
#include <stdio.h>
#define MINBOUND 5
#define MAXBOUND 10
int main (int argc, char *argv[]){
if (argc > 1){
if (MINBOUND <= *argv[1] <= MAXBOUND){
printf("arg within bound\n");
}
else {
printf("arg outside bound\n");
}
else {
printf("arg missing\n");
}
return (0);
}
最佳答案
我现在在移动设备上,因此无法进行测试以确定,但我相信这是您的两个问题。
指向 int 比较的指针。您的
#define
正在定义整数,*argv[1]
是一个char指针,指向您传递给程序的字符串。您需要在比较中使用atoi(argv[1])
。您的
if
语句语法无效。将其分解为两个条件,然后&&
在一起。
关于使用 #define 和 argv[] 比较指针和整数警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44487237/