小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


【cppcheck】Checking if unsigned variable 'xxx' is less than zero.

はじめに

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)は、正の値しかとらないので、値がマイナスになることはないので、変数の型を誤っているか、エラー処理そのものが不要である可能正があります。