当前位置: 代码迷 >> C语言 >> [求助]帮忙看哈为什么调用常量出错????
  详细解决方案

[求助]帮忙看哈为什么调用常量出错????

热度:132   发布时间:2007-01-21 19:49:29.0
[求助]帮忙看哈为什么调用常量出错????
在定义了常量OUT,但是在后面调用是报错,不知道是什么原因.在红字哪儿.如果把常量OUT改成0就没问题,大家帮我解答下,谢谢.
#include<stdio.h>
#include<ctype.h>
#define IN 1;
#define OUT 0;
main()
{
int state=0;
char chr;
while((chr=getchar())!='\\')
{
if(chr==' '||chr=='\n'||chr=='\t')
{
state=OUT;
}
else if(state==OUT)
{
state=IN;
if(isalpha(chr))
{
chr=toupper(chr);
}
}
putchar(chr);
}
}
搜索更多相关的解决方案: 常量  

----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<ctype.h>
#define IN 1
#define OUT 0 /*注意:define没有分号*/
main()
{
int state=0;
char chr;
while((chr=getchar())!='\\')
{
if(chr==' '||chr=='\n'||chr=='\t')
{
state=OUT;
}
else if(state==OUT)
{
state=IN;
if(isalpha(chr))
{
chr=toupper(chr);
}
}
putchar(chr);
}
}
----------------解决方案--------------------------------------------------------

明白了,谢谢.
再问下,既然我前面定义常量错了,那为什么在程序中使用IN和OUT是出了红字处报错,其他地方并为报错呢???


----------------解决方案--------------------------------------------------------
如果#define OUT 0;

if(state==OUT)
这条语句被编译器预处理是翻译为
if(state==0;)
而“state==0;”不是正确的表达式,所以错误

----------------解决方案--------------------------------------------------------
搞明白了,多谢斑竹....
----------------解决方案--------------------------------------------------------

斑竹就是强啊!分析比我透彻,我只是认为这是c的语法规则造成的


----------------解决方案--------------------------------------------------------
#define
预处理程序对宏定义
只做符号替换
不做语法检查

----------------解决方案--------------------------------------------------------
而typedef是在编译时处理的
不仅是符号替换
而且要做语法检查

----------------解决方案--------------------------------------------------------
  相关解决方案