仅为澄清,我找到了类似的答案,但是针对的是C++。由于我对编程还比较新,不确定它是否也适用于C。
更准确地说,任何非 0
的值都是真。
因此,1
是真的,但是 2
、3
……也是真的。
true
标识符是在<stdbool.h>
中定义的一个宏,它的值具体为1
(类型为int
)。另一方面,任何非零值在作为条件时被视为真。这就是为什么像if (b == true)
这样的语句是危险的;只需写成if (b)
即可。 - Keith Thompsonbool
只适用于设置值而不是测试。对于测试来说,在 C 语言中已经内在化了,没有任何正式的定义。我会更进一步:bool
类型完全无用,除非可能与那些 true
是 -1
的语言区分开来,但同样适用:0
为假,其他任何值都为真。 - Weather Vaneif(null_pointer)
中也是假的。 - chux - Reinstate Monicatrue
和false
分别为1和0。true
和false
,请提出更具体的问题。true
是一个整数,而不是布尔类型 - M.M_Bool
和<stdbool.h>
是由C99添加到语言中的(当然也保留在C11中)。 - Keith Thompsonbool
是一个类型定义,它是一个与任何其他整数类型不同的整数类型 _Bool
的别名。true
是一个宏,它扩展为 int
类型的 1
。如果您无法找到这些内容,我可以详细解释每个方面。 - M.M1
,虽然我知道你可能会寻找一些可操作空间。 - M.M
true == 1
和false == 0
都是正确的。(而且true == 2
不正确)。如果这不是你的意思,能否澄清一下问题? - M.Mwhile(X)
is equivalent towhile( (X) != 0 )
- M.Mtrue
是由stdbool.h
定义的,它是 C 标准库的一部分。我在谈论 C 语言,这并不奇怪。 - M.M