加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 0或1以外的整数的布尔值是多少?

发布时间:2020-12-16 10:41:11 所属栏目:百科 来源:网络整理
导读:我正在编写一个简单的函数来根据一组应该命名为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(cam
我正在编写一个简单的函数来根据一组应该命名为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以外的负值的所有值都计算为true.根据标准,只有0被认为是假的吗?

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读