2017-06-11 48 views
-3
> warning: comparison between pointer and integer 

当我尝试编译以下代码时,出现上述错误。我意识到这个问题经常被问到,而且我确实发现了很多帮助过我的源代码,但我并不是想用#define和argv []找到一个。道歉,如果这是重复的,尽管如此。使用#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); 
} 
+0

'MINBOUND <= * argv [1] <= MAXBOUND' - 你在哪里见过这样的语法? –

+0

'else {' - >'} else {' – RoiHatam

+0

老实说,我只是在这里翩翩起舞。原来我比我最初以为我会更加生疏 –

回答

-1

See the program is running fine

您的代码工作正常在我的编译器!如果不是,则尝试将字符串即argv 1转换为整数,如果您确实需要整数比较。

实际上,它只是比较argv 1的第一个字符的ASCII值和MINBOUND,因为您可以在图像中看到它。 你应该做这样

> int c=atoi(argv[1]); 
>if ((MINBOUND <= c)&&(c<= MAXBOUND)) 
+0

此外,请告诉你想达到什么目的? –

+0

您的编辑工作完美,谢谢!我很惊讶自己没有捕捉if语句的语法我自己tbh –

+0

在这里我不明白为什么我的答案downvoted! –

0

我在移动所以我现在不能测试是肯定的,但我相信这是你的两个问题。

  1. 指向int比较的指针。您的#define定义了整数,*argv[1]是您传递程序的字符串的字符指针。您需要在比较中使用atoi(argv[1])

  2. 您的if语句语法无效。把它分成两个条件和你一起&&

+0

是这就是我所做的,它的工作!谢谢!! –

相关问题