被返回的表达式应与函数的返回类型一致
8.32 ID_returnOdd
为了提高可读性并规避意料之外的错误,应避免隐式转换被返回的表达式。
不应出现下列情况:
- 返回类型为 bool,却返回了非 true 非 false、非 0 非 1 的常量
- 返回类型为指针,却返回了非 0、非 NULL、非 nullptr 的常量
- 返回类型为整数,却返回了 NULL、true、false 等常量
示例:
bool foo() { return NULL; } // Non-compliant
long bar() { return false; } // Non-compliant
int* baz() { return '\0'; } // Non-compliant
这种问题可能是在维护过程中产生的,也可能意味着逻辑错误,需谨慎对待。
参考
MISRA C++ 2008 4-10-1