はじめに
C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。
Checking if unsigned variable 'xxx' is less than zero.
cppcheckのバージョン
- v1.64
サンプルプログラム
以下のソースプログラムを解析にかけると表示されます。
#include "stdafx.h" #include <Windows.h> int _tmain(int argc, _TCHAR* argv[]) { ULONG hoge = 0; // 何らかの処理 if (hoge < 0) { // エラー処理 } return 0; }
警告の意味は、「unsignedな変数で0未満になることをチェックしている」です。
ULONG(unsigned long)は、正の値しかとらないので、値がマイナスになることはないので、変数の型を誤っているか、エラー処理そのものが不要である可能正があります。