C99 defines octal constants as a 0 followed by octal digits (0 1 2 3 4 5 6 7).
This can lead to programming errors when decimal values are mistakenly specified as octal constants.
In this noncompliant code example, a decimal constant is mistakenly prefaced with zeros so that all the constants are a fixed length.
i_array[0] = 2719; i_array[1] = 4435; i_array[2] = 0042; |
Although it may appear that that {{i_array\[2]\}} is assigned the decimal value 42, it is actually assigned the decimal value 34. |
To avoid using wrong values and make the code more readable, don't preface constants with zeroes if the value is meant to be decimal.
i_array[0] = 2719; i_array[1] = 4435; i_array[2] = 42; |
Misrepresenting decimal values as octal can lead to incorrect comparisons and assignments.
Rule |
Severity |
Likelihood |
Remediation Cost |
Priority |
Level |
---|---|---|---|---|---|
DCL18-C |
low |
unlikely |
low |
P3 |
L3 |
ISO/IEC 9899:1999 Section 6.4.4.1 "Integer constants"
MISRA Section 6.7 Rule 7.1
02. Declarations and Initialization (DCL) DCL19-C. Use as minimal a scope as possible for all variables and functions