在C语言中,true(真)和 false(假)主要用于逻辑判断和条件控制(如 if、while 语句)。

(图片来源网络,侵删)
C语言对真和假的判断规则非常简单:非零即真,零即假。
以下是C语言中关于 true 和 false 的详细解析:
核心规则:非0为真,0为假
在C语言中,没有任何关键字叫 true 或 false(在C89标准中),编译器是通过数字来辨别真假的:
false(假):值为0。true(真):只要不是0都是真,包括正数(如1,100)、负数(如-5)等。
示例代码:

(图片来源网络,侵删)
if (1) {
printf("1 是真\n"); // 会执行
}
if (-10) {
printf("-10 是真\n"); // 会执行
}
if (0) {
printf("0 是假\n"); // 不会执行
}
关系运算符和逻辑运算符的结果
在进行比较(>, <, )或逻辑运算(&&, , )时,如果条件成立,表达式的结果为 1;如果不成立,结果为 0。
示例代码:
int a = (5 > 3); // 条件成立,a 的值为 1 int b = (5 == 3); // 条件不成立,b 的值为 0 int c = !0; // 对0取反,c 的值为 1
C99 标准引入的 <stdbool.h>
在早期的C语言中,程序员通常自己定义宏来表示 true 和 false:
#define TRUE 1 #define FALSE 0
但从 C99标准 开始,C语言正式引入了 <stdbool.h> 头文件,包含这个头文件后,你就可以直接使用 true 和 false 了。

(图片来源网络,侵删)
bool:代替int来声明布尔变量。true:代表1。false:代表0。
示例代码(现代C语言推荐写法):
#include <stdio.h>
#include <stdbool.h> // 必须包含这个头文件
int main() {
bool isReady = true;
bool isFinished = false;
if (isReady) {
printf("准备就绪!\n");
}
// 打印出来的值依然是 1 和 0
printf("isReady 的值: %d\n", isReady); // 输出 1
printf("isFinished 的值: %d\n", isFinished); // 输出 0
return 0;
}
常见陷阱与注意事项
-
赋值运算符 与 比较运算符 混淆: 这是C语言初学者最容易犯的错误。
int a = 0; if (a = 5) { // 注意:这里是一个赋值语句! // a 被赋值为 5,因为 5 是非零(真),所以这个 if 分支一定会执行! }正确的写法应该是
if (a == 5)。 -
直接把整数当布尔值用: C语言允许你直接把一个整数放进
if语句里判断。int pointer = NULL; // 或者 int flag = 0; if (!pointer) { // pointer 为 0 (NULL),!pointer 1(真),会执行这里 printf("指针为空或标志为0\n"); }
- 底层逻辑:
0是假,任何非0的数都是真。 - 逻辑表达式:成立返回
1,不成立返回0。 - 现代写法:包含
<stdbool.h>,使用bool、true、false来编写可读性更强的代码。
