使用#define和argv []比较指针和整数警告

时间:2017-06-11 18:25:26

标签: c

> 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);
}

2 个答案:

答案 0 :(得分:0)

我现在正在使用手机,所以我无法测试以确定,但我相信这些是你的两个问题。

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

  2. 您的if语句语法无效。将其分解为两个条件并与&&一起。

答案 1 :(得分:-1)

See the program is running fine

您的代码在我的编译器中正常运行!如果不是,那么尝试将字符串即argv 1转换为整数,如果你真的想要进行整数比较。

实际上它只是将argv 1的第一个字符的ASCII值与MINBOUND进行比较,正如您在图像中看到的那样。 你应该这样做

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