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)