我正在编写一个简单的函数来根据一组应该命名为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被认为是假的吗?
答案 0 :(得分:12)
在C ++中,整数没有布尔值。 (不同的语言有不同的规则,但这个问题是关于C ++的。)
将整数值转换为类型bool
(通常隐式完成的转换)的结果已得到很好的定义。将0
转换为bool
的结果为false
;将任何非零值转换为bool
的结果为true
。
这同样适用于浮点值(0.0
转换为false
,所有其他值转换为true
)和指针(空指针转换为false
,所有非空指针值都转换为true
)。
答案 1 :(得分:3)
零值(对于整数,浮点和未整数枚举)以及空指针和空指针到成员值变为false。所有其他值都成为现实。
答案 2 :(得分:3)
是的,对于布尔值,除0以外的任何数字都被视为真。
访问http://www.vbforums.com/showthread.php?405047-Classic-VB-Why-is-TRUE-equal-to-1-and-not-1获取一些解释。