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