2014-02-26 50 views
0

我有以下c代码。在while循环中使用常量(c)

#include <stdio.h> 

#define MAX_NUMBER 100; 
#define MIN_NUMBER 10; 

int main() 
{ 
     printf("\nThis is a wonderful test for loops\n"); 

     int i = 12; 
     while(i < MAX_NUMBER) 
     { 
       printf(" The value of i is %d \n", i); 
       i += 10; 
     } 

     return 0; 
} 

当我编译时,我得到以下错误信息。

loop.c: In function ‘main’: 
loop.c:11: error: expected ‘)’ before ‘;’ token 

但是,如果替换while循环中的MAX_NUMBER,它会编译并运行平稳。请告诉我如何在while循环中使用常量。

+5

从'#define'行删除结尾分号。它的工作原理是 – DCoder

+0

。谢谢。 – fSazy

回答

2

你有;末定义了宏:

#define MAX_NUMBER 100; 
#define MIN_NUMBER 10; 

while看起来像这样...

while(i < 100;) 

...和编译器理所当然地抱怨:;之前预期)

删除分号。

2

请勿在您的#defines中放置半导体!

#include <stdio.h> 

#define MAX_NUMBER 100 
#define MIN_NUMBER 10 

int main() 
{ 
     printf("\nThis is a wonderful test for loops\n"); 

     int i = 12; 
     while(i < MAX_NUMBER) 
     { 
2

在年底卸下以下宏

#define MAX_NUMBER 100; 
#define MIN_NUMBER 10; 

的分号应该

#define MAX_NUMBER 100 
#define MIN_NUMBER 10 

您的代码将被转换这样

#include <stdio.h> 

#define MAX_NUMBER 100; 
#define MIN_NUMBER 10; 

int main() 
{ 
     printf("\nThis is a wonderful test for loops\n"); 

     int i = 12; 
     while(i < 100;) 
     { 
       printf(" The value of i is %d \n", i); 
       i += 10; 
     } 

     return 0; 
} 

因为分号在同时条件统计ement你得到错误。 虽然条件应该是

while(i < 100) 
1

当你的代码中,compliler“翻译”这样的:

while(i < 100;) 

你知道如何修改密码?

+0

是的,我已经根据@DCoder的评论进行了修改 – fSazy

0

检查define关键字的语法及其用法一次。

#define token [value] 

如果任何语句以#符号开头,则不必以分号(;)结束。