在C语言中,逻辑“真”值用 非零整数 来表示。

(图片来源网络,侵删)
最常见和最规范的方式是使用整数 1。
详细解释
在C语言中,布尔逻辑(真/假)是基于整数的:
- 真: 任何非零的值都被认为是“真”,这包括
1,2,-1,100,14(在浮点数比较中) 等等。 - 假: 唯一的“假”值就是整数
0。
最常见的表示方法
使用整数 1 (最常见、最清晰)
这是最直接、最容易被理解的方式,也最符合逻辑。
#include <stdio.h>
int main() {
int is_true = 1; // 用 1 表示真
if (is_true) {
printf("条件为真\n"); // 这行代码会被执行
}
return 0;
}
使用宏定义 (可读性更好)
为了提高代码的可读性,C标准库 <stdbool.h> (C99引入) 和很多旧代码中会使用宏来定义真和假。

(图片来源网络,侵删)
- 在 C99 及以后,推荐使用
<stdbool.h>
这是现代C语言处理布尔值的标准方式。
#include <stdio.h>
#include <stdbool.h> // 引入布尔类型头文件
int main() {
bool is_ready = true; // 使用 true 关键字,它被预定义为 1
if (is_ready) {
printf("系统已准备就绪\n"); // 这行代码会被执行
}
return 0;
}
- 在旧代码或C89标准中,常见自定义宏
在 <stdbool.h> 出现之前,程序员通常自己定义这些宏。
#include <stdio.h>
// 自定义宏
#define TRUE 1
#define FALSE 0
int main() {
int is_valid = TRUE; // 使用自定义的 TRUE 宏
if (is_valid) {
printf("数据有效\n"); // 这行代码会被执行
}
return 0;
}
关键点:逻辑运算符的结果
C语言中的逻辑运算符(&&, , )的返回值也是整数。
&&(与): 如果两边都为真,返回1;否则返回0。- (或): 如果两边至少有一个为真,返回
1;否则返回0。 - (非): 如果操作数为真(非零),返回
0;如果操作数为假(零),返回1。
#include <stdio.h>
int main() {
int a = 5, b = 0;
// && 的结果是 1 (真)
int result_and = (a != 0) && (b != 0); // (1) && (0) 结果是 0
printf("a && b 的结果是: %d\n", result_and); // 输出: 0
// || 的结果是 1 (真)
int result_or = (a != 0) || (b != 0); // (1) || (0) 结果是 1
printf("a || b 的结果是: %d\n", result_or); // 输出: 1
// ! 的结果是 0 (假)
int result_not_a = !a; // !5 结果是 0
printf("!a 的结果是: %d\n", result_not_a); // 输出: 0
return 0;
}
| 表示方式 | 描述 | 示例 | 推荐度 |
|---|---|---|---|
1 |
直接使用整数1表示真,最基础、最通用。 | int flag = 1; |
⭐⭐⭐⭐ |
true |
C99标准,来自 <stdbool.h>,可读性最高。 |
bool flag = true; |
⭐⭐⭐⭐⭐ (现代C) |
| 任何非零整数 | C语言的内在规则,任何非零值都为真。 | int flag = -10; |
⭐⭐ (可读性差,不推荐直接使用) |
- 最规范、最现代的方式是使用
#include <stdbool.h>和true。 - 最基础、最通用的方式是直接使用整数
1。 - 核心规则是:任何非零整数都代表逻辑真。

(图片来源网络,侵删)
