[求助]帮忙看哈为什么调用常量出错????
在定义了常量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是在编译时处理的
不仅是符号替换
而且要做语法检查
----------------解决方案--------------------------------------------------------