找回密码
 register

QQ登录

只需一步,快速开始

查看: 6|回复: 0

[C++] C++布尔类型(bool)

[复制链接]

[C++] C++布尔类型(bool)

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:240
  • 打卡月天数:17
  • 打卡总奖励:238
  • 最近打卡:2025-07-19 00:57:06
Waylee

主题

0

回帖

2万

积分

仙帝

积分
26258
Waylee 2025-7-19 01:49 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

在 C 语言中,关系运算和逻辑运算的结果用两种值表示:真和假。其中,0 表示“假”,非 0 表示“真”。

例如:

#include <stdio.h>
int main() {
    int a, b, flag;
    scanf("%d %d", &a, &b);
    flag = a > b;  // flag 保存关系运算结果:0 或非 0
    printf("flag = %d\n", flag);
    return 0;
}

如果输入 10 20,程序输出:

flag = 0

虽然我们习惯将结果视作“真”和“假”,但在 C 语言标准(自 C89 起)中,关系表达式和逻辑表达式的求值结果是整型。根据 C99 及以后的标准,表达式的结果会被转换为 0 或 1,表示假和真。

在 C99 及以后版本中,关系和逻辑运算符的结果要么是 0,要么是 1(而非任意非零值)。

#include <stdio.h>
int main() {
    printf("%d\n", (5 > 3));   // 打印 1
    printf("%d\n", (5 && 2)); // 打印 1,逻辑与
    printf("%d\n", (!0));     // 打印 1,逻辑非
    printf("%d\n", (5 && 0)); // 打印 0
    return 0;
}

为了让代码更具可读性,我们常常希望有真正的布尔类型。在 C++ 中,这一需求得到了满足:


#include <iostream>
using namespace std;

int main() {
    int a, b;
    bool flag;           // 定义布尔变量
    cin >> a >> b;
    flag = (a > b);
    cout << "flag = " << flag << endl;
    return 0;
}

输入 10 20 后,输出:

flag = 0

在 C++ 中,bool 类型只有两个取值:

  • true 表示真
  • false 表示假

但是,默认情况下,使用 cout 输出 bool 变量时,仍然会以数字 10 表示。

如果想让 cout 输出 true/false 字符串,可以引入 std::boolalpha

#include <iostream>
using namespace std;

int main() {
    bool flag = true;
    cout << boolalpha;     // 打开布尔值字面输出
    cout << flag << endl;  // 输出 "true"
    flag = false;
    cout << flag << endl;  // 输出 "false"
    return 0;
}

此外,自 C99 标准开始,C 语言也支持真正的布尔类型:

#include <stdbool.h>  // 引入 bool、true、false 定义
#include <stdio.h>

int main() {
    bool flag = true;
    if (flag) {
        puts("true");
    } else {
        puts("false");
    }
    flag = false;
    if (flag) {
        puts("true");
    } else {
        puts("false");
    }
    return 0;
}

在这段代码中:

  • stdbool.h 中定义了宏 bool_Bool,并将 truefalse 分别定义为 10
  • _Bool 类型是 C 语言原生的布尔类型,大小通常为 1 字节。

建议:在代码中,使用 bool(或在 C 中引入 stdbool.h)来表示逻辑或开关变量,能让代码语义更清晰、可维护性更高。

补充说明

  1. 逻辑运算符

    • &&(逻辑与),只有两边都为真时结果才为真。
    • ||(逻辑或),只要有一边为真结果就为真。
    • !(逻辑非),将真变为假,将假变为真。
  2. 短路求值:在 C/C++ 中,&&|| 都具有短路特性,即:

    • a && b:如果 a 为假,则不再计算 b
    • a || b:如果 a 为真,则不再计算 b
  3. 类型转换

    • 在 C 中,任何非零整数值用于逻辑上下文时都被当作真。
    • 在 C++ 中,整数到 bool 会被转换:0 为 false,非 0 为 true
您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |网站地图|天天打卡

GMT+8, 2025-7-19 08:47 , Processed in 0.108694 second(s), 5 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表