什么是bool保证返回?我可以依赖bool类型来解释为0或1吗?如果bool的数值解释在C99中不可靠,那么有一个标准吗?在依赖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类型只返回0或1.
什么是bool保证返回?我可以依赖bool类型来解释为0或1吗?
在严格符合的程序中,保证_Bool
(或bool
来自stdbool.h
)表达式被评估为0
或者1
.
如果从bool
表达式获得不同的值,则意味着您正在上游调用某些未定义的行为.