bool(boolean) 保证返回什么?我可以依靠 bool(boolean) 类型始终将其解释为0或1吗?如果C99中bool的数值解释不可靠,那么那里有一个标准吗?依靠bool进行算术运算时,在LLVM,GCC或Visual C++中应该注意什么?

例如,如果我这样做:

// An example of calculating a possible stride in bytes.
// hasData(), is8bit(), and is16bit() return as bool type

unsigned int stride = object->hasData() * object->size() *
                      (object->is8bit()  * sizeof(uint8_t) +
                       object->is16bit() * sizeof(uint16_t));

在示例中,我押注 bool(boolean) 型仅返回0或1。

最佳答案

C99标准要求编译器产生的_Bool值为0或1。C++也具有此要求。不,我不知道描述此文件的标准文档的确切页面。

当然,在问世16年之后,编译器中仍然有可能存在bug,如果我们使用的编译器已有10年历史,并且在生产时未经过C99兼容性的良好测试,那就更是如此。但是,例如,我经常编写依赖于编译器从条件表达式生成0或1的代码。

关于c - 在C99中, bool 类型可以返回什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34384763/

10-15 17:46