C/C++では、(1U)
と((unsigned int)1)
の間に違いがありますか?私は第2のものを好むが、第2のものが実行時にタイプキャストされる(すなわち余分なCPUサイクル)ことが懸念されるが、最初のものはコンパイル時に正しいタイプを得る。ありがとう。C/C++で型付き定数を定義する
答えて
11文字。それ以外の場合は、同等です。
あなたはそれが正しいと思います。 (1U)私は、コンパイラの字句解析によって「符号なし」と認識されると思われますが、(符号なしのint)1は実行時操作になります。 コメントは言うまでもなく、とにかく最適化される可能性があります。
一般的に、コンパイラを考えないでください。あなたに問題があることが明らかになったら、あなたに最も読みやすいように見せて、パフォーマンスの最適化について心配してください。 私はこれが決して実際に問題を引き起こすことはないと保証することができます。 Y.
ランタイム操作である '(unsigned int)1'の可能性は、最適化されていないコンパイラを最小限に抑えたとしても、基本的にはゼロになります。 –
で終わる日に
*保証ボイド彼らは同じではありませんね。 1U
は#if
の前処理指令で有効です。 (unsigned int)1
は、プリプロセッサレベルでの構文エラーです。あなたはそれを(unsigned)+1
にすることができますが、それはプリプロセッサでは有効ですが、あまり知られていないルールのためにのみです。
「プリプロセッサ番号」は奇妙です! ISO/IEC 9899:1999、§6.4.8_前処理数_は構文を(改行を示すパイプとして)定義しています: 'pp-number:digit | 。桁| | pp-number identifier-nondigit | | pp-number E記号| pp-number p記号| pp-number P記号| pp-number。 つまり、_pp-number_にはあらゆる種類のアルファベットを含めることができます。 '(符号なし)'は数値として定義されていないので、0に変換され、 '(0)+ 1'は整数として有効です。反対。 –
署名がないほど良い点。とにかく署名レベルはどのようにPPレベルで機能しますか?すべての算術演算は最大サイズの整数型のように行われますが、符号付き/符号なしの比較の問題、巨大な値のオーバーフロー/ラッピングなどはどうでしょうか? –
§6.10.1_コンディショナルinclusion_、¶3:_マクロ拡張によるすべての置換と定義された単項演算が実行された後、残りのすべての識別子がpp-number に置き換えられ、各プリプロセストークンが変換されますトークンに変換する。結果として生じるトークン は、 6.6の規則に従って評価される制御定数式を構成します。ただし、符号付き整数型およびすべての符号なし整数型は、それぞれがint型の型と同じ表現 を持つかのように動作します。 'uintmax_t'は、 ヘッダ'
- 1. 名前付き関数の型を定義する方法は?
- 2. VBAでユーザー定義型の定数を定義することはできますか?
- 3. Enum.Isフラグ付き列挙型で定義されています
- 4. 型付き配列(Typescript)の未定義のプロパティですか?
- 5. 型付きデータセットを動的に定義しますか?
- 6. DB2で制約付きのユーザー定義データ型
- 7. 型定義内のパラメータ型の関数
- 8. Typescript定義ファイルで不明な型のJavascript関数を定義する
- 9. 制限付き整数をz3で定義する
- 10. enum型を定義する
- 11. カスタムデータ型を定義する
- 12. PHPで複数の関数の引数型を定義する
- 13. XMLスキーマでユーザー定義データ型を定義する方法は?
- 14. Pythonで厳密な型付けされた変数を定義する
- 15. 名前付き整数定数のリストを便利に定義するには?
- 16. ジョイント型定義
- 17. ハスケル - 型定義
- 18. Erlang型定義
- 19. 関数型をhaskellの関数定義で宣言する
- 20. クラス型パラメータの型を決定する型付き
- 21. ハスケル:型式(型格)を定義できます
- 22. フロータイプ、クラス内で型を定義する
- 23. ユーザー定義のテーブル型定義
- 24. Oracleユーザー定義型のパッケージ定義内
- 25. 角型2のアウトタイプ定義付きノードモジュールの使用
- 26. ユーザ定義型ocamlを取り込むセットを定義する
- 27. Javaで配列定数で定義された列挙型
- 28. 巡回型定義を定義する方法は?
- 29. ユーザ定義フォーマットのput関数を使用して条件付きで新しいフィールドを定義する
- 30. ユーザ定義型は、カサンドラで別のユーザ定義型を参照できますか?
たとえ違いがあっても、コンパイル時にほぼすべてのモダンコンパイラ。 – casablanca
技術的な違いはありますが、実用的なものはありません。 – Xeo
私は、int(1)をunsigned int(1)に変換するためにどのような命令が使用されているかと思います。 –