JPCERT コーディネーションセンター

DCL16-C. long 値を表すには小文字の "l" ではなく大文字の "L" を使う

小文字の l は数字の 1 と混同されやすい。これが特に紛らわしいのは、整数リテラル定数が long 値であることを示す場合である。このレコメンデーションは、「DCL02-C. 視覚的に区別できる識別子を使う」とよく似ている。

同様に、整数リテラル定数が long long 値であることを示す場合、小文字の ll ではなく、大文字の LL を使用すべきである。

違反コード

以下のコード例では、整数とlong値の加算結果を強調しているが、二つの整数 1111 を加算しているかのように見えてしまう。

	printf("Sum is %ld\n", 1111 + 111l);
適合コード

以下の適合コードでは、小文字の l のかわりに大文字の L を使用し、見た目を明確にしている。

	printf("Sum is %ld\n", 1111 + 111L);
リスク評価

long 値を整数表記する際に、小文字の l と数字の 1 を混同すると、コードに間違った値が書き込まれる恐れがある。

レコメンデーション

深刻度

可能性

修正コスト

優先度

レベル

DCL16-C

P3

L3

自動検出

ツール

バージョン

チェッカー

説明

ECLAIR

1.1

ltrlsynt

実装済み

PRQA QA-C 8.1 1280 実装済み
関連するガイドライン
CERT C++ Secure Coding Standard DCL16-CPP. Use 'L', not 'l', to indicate a long value
参考資料
[Lockheed Martin 2005] AV Rule 14, Literal suffixes shall use uppercase rather than lowercase letters
翻訳元

これは以下のページを翻訳したものです。

DCL16-C. Use "L," not "l," to indicate a long value (revision 39)

Top へ

Topへ
最新情報(RSSメーリングリストTwitter