首页 > 解决方案 > 由于布尔值是 C++ 中的整数类型,这是否意味着“0.0”不是假的?

问题描述

背景

在 C++ 中,布尔值存储为整数:

布尔值实际上并不作为单词“true”或“false”存储在布尔变量中。相反,它们存储为整数:true 变为整数 1,false 变为整数 0。类似地,当计算布尔值时,它们实际上并不计算为“真”或“假”。它们评估为整数 0(假)或 1(真)。因为布尔值实际上存储整数,所以它们被认为是整数类型。

然而,这似乎与我所看到的相矛盾。我最近遇到了一个分支文件,它似乎暗示浮点值 0.0 也相当于 false,如下所示:

基础版本

arraySet_[m][n].resize(VALUES().maximumCellsPerRow[r], 0.0);

分支版本

arraySet_[m][n].resize(VALUES().maximumCellsPerRow[r],false);

鉴于我所看到的这种等效性,我现在想知道......

问题

即使布尔值存储为整数,C++ 是否也将float0.0 的值解释为 false?

标签: c++floating-pointboolean

解决方案


推荐阅读