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

Compare with Current View Page History

« Previous Version 59 Next »

Lowercase letter l (ell) can easily be confused with the digit 1 (one). This can be particularly confusing when indicating that an integer literal constant is a long value. This recommendation is similar to DCL02-C. Use visually distinct identifiers.

Likewise, you should use uppercase LL rather than lowercase ll when indicating that an integer literal constant is a long long value.

Noncompliant Code Example

This noncompliant example highlights the result of adding an integer and a long value even though it appears that two integers 1111 are being added:

	printf("Sum is %ld\n", 1111 + 111l);

Compliant Solution

The compliant solution improvises by using an uppercase L instead of lowercase l to disambiguate the visual appearance:

	printf("Sum is %ld\n", 1111 + 111L);

Risk Assessment

Confusing a lowercase letter l (ell) with a digit 1 (one) when indicating that an integer denotation is a long value could lead to an incorrect value being written into code.

Recommendation

Severity

Likelihood

Remediation Cost

Priority

Level

DCL16-C

Low

Unlikely

Low

P3

L3

Automated Detection

Tool

Version

Checker

Description

Astrée
24.04
long-suffixFully checked
CodeSonar
8.1p0
LANG.TYPE.CSUFConfusing literal suffix

ECLAIR

1.2

CC2.DCL16

Fully implemented

LDRA tool suite
 9.7.1
252 SFully implemented
Parasoft C/C++test
2023.1
PORT-01Fully implemented
PRQA QA-C
Unable to render {include} The included page could not be found.
1280Fully implemented
RuleChecker
24.04
long-suffixFully checked
SonarQube C/C++ Plugin
3.11
LiteralSuffix

Related Vulnerabilities

Search for vulnerabilities resulting from the violation of this rule on the CERT website.

Related Guidelines

Bibliography

[Lockheed Martin 2005]AV Rule 14, Literal suffixes shall use uppercase rather than lowercase letters



  • No labels