禁用 8 进制常量
11.11 ID_literal_forbidOct
8 进制不像 10 进制那样符合人们的常规思维,也不像 2 进制或 16 进制那样便于展示数据的存储格式,而且 C/C++ 语言中 8 进制表示法只是在数字前置 0,与十进制过于相似,易被误用。
示例:
const int K_0 = 5592;
const int K_1 = 0631; // Non-compliant
const int K_2 = 3817;
const int K_3 = 4257;
为了格式上的对齐,错误地在 10 进制数前写 0 是常见笔误,例中 k_1 的实际值为 409。
参考
MISRA C 2004 7.1
MISRA C 2012 7.1
MISRA C++ 2008 2-13-2