这是正确的C声明吗?如果是这样,为什么它不起作用?

时间:2011-07-14 13:55:26

标签: c variables declaration

我正在编写一本教程书中的演示程序,用于教授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)。

5 个答案:

答案 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