C 为什么(true&;true)会引发错误,而(1&;1)不会&x27;T
我原以为C将C 为什么(true&;true)会引发错误,而(1&;1)不会&x27;T,c,logical-operators,C,Logical Operators,我原以为C将true解释为1,但现在我有了疑问 完整代码(使用GCC 5.1编译): 为什么会发生这种情况? < P> 真< /COD>不是C中的关键字,就像它在C++中一样。 要访问它,您必须#include才能使用C中的true和false宏(它们不是保留字),您需要包含@tadman yes,但两者都是整数,并且因为它们具有可比性吗?只有在您给编译器一个提示的情况下,与包含右头文件一样。@tadman它确实有一个布尔类型。它叫\u Bool。我们需要宏来将其重命名为bool,因为C过去没有
true
解释为1
,但现在我有了疑问
完整代码(使用GCC 5.1编译):
为什么会发生这种情况?
< P> <代码>真< /COD>不是C中的关键字,就像它在C++中一样。要访问它,您必须
#include
才能使用C
中的true
和false
宏(它们不是保留字),您需要包含@tadman yes,但两者都是整数,并且因为它们具有可比性吗?只有在您给编译器一个提示的情况下,与包含右头文件一样。@tadman它确实有一个布尔类型。它叫\u Bool
。我们需要宏来将其重命名为bool
,因为C过去没有布尔类型,人们通常编写宏来伪造它,所以所有的bool
-东西都被设置为opt-in,以避免冲突。请注意true
、false
和bool
可能成为C2x中的关键字。@JonathanLeffler-Yay!等不及了。
if(true && true) // Error: 'true' undeclared (first use in this function)
{
}