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

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

最佳答案

我现在在移动设备上,因此无法进行测试以确定,但我相信这是您的两个问题。

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

  2. 您的 if 语句语法无效。将其分解为两个条件,然后&&在一起。

关于使用 #define 和 argv[] 比较指针和整数警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44487237/

相关文章:

c - libdtrace 缓冲输出

c - 先递增后乘法或先递增后乘法会发生什么?

c++ - C/C++ - 共享内存中的环形缓冲区(POSIX 兼容)

C 中客户端之间的 ChatRoom 服务 - TCP

c - 无变量字符串反转

c - 多个 realloc 是否比一个巨大的 malloc 更昂贵?

c++ - 快速 strlen 函数与别名规则

matlab - C语言的移动平均线

c - 使用多个 NIC 广播 UDP 数据包

c - gcc 是否保留被调用者保存寄存器