You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么C++中bool类型二维数组存储的值不总是0和1?

问题原因分析
  • 你代码中定义的bool arr[5][5]属于函数内的局部非静态数组,C++标准规定这类变量不会执行默认初始化,数组元素会直接保留对应内存地址上的原有随机脏数据。
  • bool类型在底层通常用1字节的空间存储,未初始化的情况下这1字节的取值可以是0x00到0xFF之间的任意数值,并不局限于代表false的0和代表true的1。
  • 部分编译器的cout实现输出bool类型时,不会强制将非法值转换为0/1,而是直接输出对应存储的整数值,因此会出现0、1之外的随机输出。
修复方案

只要在定义数组时完成初始化即可,示例写法如下:

// 所有元素会被默认初始化为false
bool arr[5][5] = {};

初始化后所有元素的取值都是合法的bool值,输出就只会出现0和1。

内容的提问来源于stack exchange,提问作者Samiul Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:15:01