多くの場合、私が使用するオブジェクトには(署名された)int
パラメーター(たとえばint iSize
)があり、最終的には何かの大きさを格納します。同時に、-1
オブジェクト(など)がセットアップされていない/埋められていない/使用する準備ができていないことを示すために、それらを初期化することがよくあります。
comparison between signed and unsigned integer
のようなことをすると、警告が表示されることがよくありif( iSize >= someVector.size() ) { ... }
ます。
したがって、私は名目上、を使用したくunsigned int
ありません。これがエラーまたは予期しない動作につながる状況はありますか?
そうでない場合:これを処理するための最良の方法は何ですか?コンパイラフラグを使用すると、 (またはそのようなもの)を使用する必要-Wno-sign-compare
がある状況を(仮想的に)見逃す可能性があります。したがって、 -egと比較する場合は、キャストを使用する必要がありますか?unsigned int
unsigned int
if( iSize >= (int)someVector.size() ) { ... }