2016-02-04 55 views
0

我已經開始使用notepad ++編寫C和mW來編譯我的大學課程。我正在製作一個程序,告訴你是否有偶數或奇數個參數。任何超過10的論點都說太多了。不過,我不斷收到一個錯誤信息說「錯誤:之前預期標識符‘(’」,它在ARG%2之前的支架點的任何幫助將不勝感激MingW編譯器中的C語句和語句導致的錯誤

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 

    if (argc ==1) 
    { 
     fprintf(stderr,"You need to give some arguments\n"); 
     return 1; 
    } 

    else if (arg < 11)&&(argc%2 == 0) 
    { 
     printf("There is an odd number of arguments\n"); 

    } 
    else if (argc%2 == 1) 
    { 
     printf("There is an even number of arguments\n"); 

    } 
    if (argc > 11) 
    { 
     fprintf(stderr,"Error: Too many arguments!\n"); 
     return 1; 
    } 
    return 0; 
+3

錯字:您需要'else if(arg <11 && argc %2 == 0)'。 – juanchopanza

+1

C沒有'和'語句''&&'不是語句。 – Olaf

+0

yh謝謝juan工作! – Jim

回答

1

if語法是:!

if (condition) 

其次是無論是else或語句塊你的代碼不符合這個語法,所以你得到一個語法錯誤

你可以這樣寫:

if ((arg < 11)&&(argc%2 == 0)) 

可選地沒有內部圓括號。 &&的優先級低於其中涉及的其他運算符,但有些人認爲無論如何使用圓括號都會增加清晰度。

1

M.M是正確的。 缺少括號會使編譯器過早地結束對if語句的評估。它會讀取第12行:「arg < 11」然後停止。

另外! 不要忘記糾正拼寫,對argc的一些調用被錯誤地鍵入爲'arg'。恩。第12行「(arg < 11 ...」 如果您提交(對SE)您的代碼逐字,這肯定是一個編譯錯誤。