c – 条件赋值为布尔值

前端之家收集整理的这篇文章主要介绍了c – 条件赋值为布尔值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在C中模拟布尔值可以这样做:
int success;
success = (errors == 0 && count > 0);
if(success)
   ...

使用stdbool.h可以完成以下操作:

bool success;
success = (errors == 0 && count > 0) ? true : false;
if(success)
   ...

据我所知,逻辑和比较运算符应返回1或0.
此外,应定义stdbool.h常量,以便true == 1和false == 0.

因此,以下应该工作:

bool success;
success = (errors == 0 && count > 0);
if(success)
   ...

它确实适用于我测试过的编译器.但是假设它是可移植代码是否安全? (假设存在stdbool.h)

由于bool是内部类型,C编译器的情况是否不同?

解决方法

可以安全地假设.在C99中,转换为_Bool类型后,所有非零值都将转换为1.这将在C99​​标准的6.3.1.2节中介绍.等式和关系运算符(例如==,> =等)保证也会产生1或0.这将在6.5.8和6.5.9节中描述.

对于C,bool类型是一个真正的布尔类型,其中值被转换为true或false而不是1或0,但是仍然可以安全地将==操作等的结果分配给bool并期望它工作,因为关系运算符和比较运算符无论如何都会导致bool.当true转换为整数类型时,它将转换为1.

猜你在找的C&C++相关文章