You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

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.

Noncompliant Code Example

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.

Compliant Code Example

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;

Risk Assessment

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

Related Guidelines

ISO/IEC 9899:1999] Section 6.4.4.1 "Integer constants"

MISRA Section 6.7 Rule 7.1

Bibliography


      02. Declarations and Initialization (DCL)      DCL19-C. Use as minimal a scope as possible for all variables and functions

  • No labels