2017-06-11 83 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

是這就是我所做的,它的工作!謝謝!! –

相關問題