除0或1之外的整数的布尔值是多少?

时间:2014-11-19 18:15:52

标签: c++ boolean

我正在编写一个简单的函数来根据一组应该命名为cam1_0.bmp,cam1_1.bmp的文件派生出一个新的文件名,然后尝试了这个。

static int suffix = 0;
std::string fPre("cam");
std::ifstream fs;
std::string fName;
do {
    fName = fPre;
    fName.append(std::to_string(camera)).append("_").append(std::to_string(suffix)).append(".bmp");
    fs.open(fName);
} while (fs.good() && ++suffix);

这是有效的,它让我想知道对于0或1以外的数值,相应布尔值的标准定义行为是什么。通过这个实验,我知道包括除0以外的负值的所有值都计算为真。根据标准,只有0被认为是假的吗?

3 个答案:

答案 0 :(得分:12)

在C ++中,整数没有布尔值。 (不同的语言有不同的规则,但这个问题是关于C ++的。)

整数值转换为类型bool(通常隐式完成的转换)的结果已得到很好的定义。将0转换为bool的结果为false;将任何非零值转换为bool的结果为true

这同样适用于浮点值(0.0转换为false,所有其他值转换为true)和指针(空指针转换为false ,所有非空指针值都转换为true)。

答案 1 :(得分:3)

零值(对于整数,浮点和未整数枚举)以及空指针和空指针到成员值变为false。所有其他值都成为现实。

Source

答案 2 :(得分:3)

是的,对于布尔值,除0以外的任何数字都被视为真。

访问http://www.vbforums.com/showthread.php?405047-Classic-VB-Why-is-TRUE-equal-to-1-and-not-1获取一些解释。