[解決済み] Cの1Uと1の違いはあるのでしょうか?
2022-02-07 08:06:09
質問内容
while ((1U << i) < nSize) {
i++;
}
を使用する特別な理由はありますか?
1U
の代わりに
1
?
解決方法は?
ほとんどのコンパイラでは、どちらも同じ表現で結果を出します。 しかし、C言語仕様では、符号付き引数に対するビットシフト演算の結果は、実装で定義された結果を与えることになっています。
理論
1U << i
の方が、よりポータブルです。
1 << i
. 実際には、すべてのCコンパイラは、符号付き左シフトを符号なし左シフトと同じように扱います。
もう一つの理由は、もし
nSize
が符号なしである場合、それを符号ありの
1 << i
は、コンパイラの警告を発生させます。 そのため
1
から
1U
を使えば警告メッセージは表示されませんし、もし
i
が31または63の場合。
コンパイラの警告が原因である可能性が高いです。
1U
が表示されます。 ほとんどの警告をオンにした状態でCをコンパイルし、コードを変更することで警告メッセージをなくすことをお勧めします。
関連
-
[解決済み】Linuxソケットのwrite()でBad File Descriptorが発生するC
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] 0から9までのランダムな整数を生成する
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] intの最大値、最小値
-
[解決済み] mallocとcallocの違い?
-
[解決済み] スタティック・ライブラリとシェアード・ライブラリの違い?
-
[解決済み】定義と宣言の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind が "Invalid write of size 8" で文句を言う。
-
[解決済み】 `S_ISREG()` とは何ですか、そして何をするのですか?
-
[解決済み】初期化がキャストなしで整数からポインタを作成 - C言語
-
[解決済み] struct で "warning: useless storage class specifier in empty declaration" (警告: 空の宣言での無駄なストレージクラス指定子)
-
[解決済み】LEALアセンブリ命令は何をするのですか?
-
[解決済み] struct has no member named
-
[解決済み] エラー:整数が期待されるところで集約値が使用された
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み] Cプログラムで「配列の添え字が整数でない」。