我正在编写一本教程书中的演示程序,用于教授Unix和Windows的“C”。但是,有时我会遇到一些代码,当完全输入时,它不想工作。
例如
#include <stdio.h>
int main()
{
/*This next line is the error */
int num = 2, bool = 0;
if ( (num==2) && (!bool) )
{
printf("The first test is untrue\n");
}
else if( (num==2) && (!bool) )
{
printf("The second test is true\n");
}
else if( (num==2) && (bool==0) )
{
printf("The third test is true - but unreached\n");
}
return 0;
}
无论如何,就像我在标题中提到的那样,我很好奇我是否正确地声明了这些变量。我使用的是Windows操作系统(7)。
答案 0 :(得分:3)
bool现在是C ++中的保留字,不能用作变量的名称。写这本书时,bool不是C语言中的保留字,他们将它用作int变量的名称。
答案 1 :(得分:3)
我认为Stack Overflow的代码着色实际上为您找到了错误。虽然ANSI C没有bool
关键字(尽管C99确实将_Bool
保留为关键字),但您使用的编译器很可能会扩展标准并定义bool
关键字,尤其是它确实存在于C ++和其他C派生语言中。解决方案很简单:要么强制您的编译器符合ANSI标准,要么只更改变量名称。
答案 2 :(得分:1)
使用C编译器时,不应该出现错误,因为bool
既不是C中的类型也不是保留字。
但是,使用C ++编译器,您可能会收到解析错误。
答案 3 :(得分:0)
也许是因为bool是C ++编译器中的一个类型,它是一个保留字。因此,它可能取决于您使用的编译器。
答案 4 :(得分:0)
将来,请包含编译器的确切错误消息,以及您正在使用的开发环境的描述(Visual Studio,Eclipse,gcc,tcc,lcc-win等)。知道你正在使用哪本书也会有所帮助;关于C编程的非常简单的书籍是废话。
我怀疑你是以某种方式将代码编译为C ++,而不是C,而bool
是C ++中的保留字。如果您使用的是Visual Studio,请确保文件扩展名为.c
,而不是.cpp
。