为何bool类型函数返回true与1均能正常工作?
为什么bool类型函数可以返回true或整数1?
核心原因是C的隐式类型转换机制:当你在返回类型为
bool的函数里返回整数1时,编译器会自动把整数类型转换成bool类型。按照C规则,所有非零的整数都会被转换成true(对应单字节的0x01),零值则转换成false(对应0x00),所以返回1和返回true在语义上完全等价。关于你提到的内存占用差异:虽然整数1在内存中可能是多字节(比如32位平台下是4字节的0x00000001),但编译器在处理返回值时会完成转换操作——它会把多字节的整数转换成符合
bool类型的单字节值后再返回,不会直接把多字节内容作为返回值输出。额外补充:C++标准允许从整数、指针等多种类型隐式转换到
bool类型,只要源值非零就会被判定为true,这也是为什么返回其他非零整数甚至非空指针,在bool类型函数里都能生效的原因。
内容的提问来源于stack exchange,提问作者Albert Shown
相关产品推荐
相关产品推荐

