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/