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. Enum.Isフラグ付き列挙型で定義されています
- 2. 型付きデータセットを動的に定義しますか?
- 3. DB2で制約付きのユーザー定義データ型
- 4. PHPで複数の関数の引数型を定義する
- 5. enum型を定義する
- 6. XMLスキーマでユーザー定義データ型を定義する方法は?
- 7. クラス型パラメータの型を決定する型付き
- 8. Oracleユーザー定義型のパッケージ定義内
- 9. ハスケル:型式(型格)を定義できます
- 10. Javaで配列定数で定義された列挙型
- 11. 巡回型定義を定義する方法は?
- 12. 関数型定義のガイダンスが必要
- 13. C++ 11関数型の参照を参照で定義する
- 14. テンプレート引数で定義された型を使用する
- 15. 関数定義のVoid引数で、宣言のプリミティブデータ型です
- 16. R関数の引数型を定義する方法は?
- 17. `__eq__`を定義する型はハッシュできませんか?
- 18. 未指定の戻り値の型でMySQLでストアド関数を定義することはできますか?
- 19. いつstdint.hで定義された整数型を使うべきですか?
- 20. Linqグループをユーザー定義型にする
- 21. Python MySQLdbでユーザー定義変数を設定できますか?
- 22. - マップでどのように型を定義できますか?
- 23. Restler関数のドキュメントで配列の型を定義します
- 24. 条件付きのグループでmysqlユーザ定義変数を使用する
- 25. テストダブルを定義するときに複数の定義を避ける方法
- 26. Rubyで名前付きクラスを動的に定義する
- 27. 条件付きでカーソルを定義する
- 28. javascript定数をグローバルに定義する
- 29. HTML5定型文+条件付きコメント
- 30. 条件付きタイプの別名定義
たとえ違いがあっても、コンパイル時にほぼすべてのモダンコンパイラ。 – casablanca
技術的な違いはありますが、実用的なものはありません。 – Xeo
私は、int(1)をunsigned int(1)に変換するためにどのような命令が使用されているかと思います。 –