相关疑难解决方法(0)

在对int进行类型转换时,C/C++ bool类型总是保证为0或1吗?

许多编译器似乎只保留bool值中的0或1,但我不确定这将始终有效:

int a = 2;
bool b = a;
int c = 3 + b; // 4 or 5?
Run Code Online (Sandbox Code Playgroud)

c c++ boolean

44
推荐指数
4
解决办法
4万
查看次数

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

我正在编写一个简单的函数来根据一组应该命名为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);
Run Code Online (Sandbox Code Playgroud)

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

c++ boolean

3
推荐指数
1
解决办法
9573
查看次数

标签 统计

boolean ×2

c++ ×2

c ×1