2016-02-04 81 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)您的代码逐字,这肯定是一个编译错误。