有符号数不应和无符号数比较
10.5.4 ID_inconsistentSignComparison
有符号数和无符号数比较时,有符号数会被转换成无符号数,易产生意料之外的错误。
本规则是 ID_signChangeCast 的特化。
示例:
void foo(signed s, unsigned u) {
if (s < u) { // Non-compliant
....
}
}
配置
allowSmallUnsignedTypes: 是否允许 unsigned char、unsigned short 型表达式与 int 及更大取值范围的表达式比较
allowPtrdiffTypeToSizeType: 是否允许 ptrdiff_t 型表达式与 size_t 型表达式比较
相关
依据
ISO/IEC 9899:1999 6.3.1.3
ISO/IEC 9899:2011 6.3.1.3
ISO/IEC 14882:2003 4.7
ISO/IEC 14882:2011 4.7
参考
C++ Core Guidelines ES.100
MISRA C 2012 10.4
MISRA C++ 2008 5-0-4