私はトラブルの記号とリテラル定数の定義および使用してグリップを取得し、あなたは誰もがそれらを説明し、その違いを強調することができれば、私は思っていたが生じています。ありがとう!Cのリテラル定数とシンボリック定数の違いと定義は?
答えて
シンボルは、コンパイラのお得な情報を持つものです。コンパイラはconst
を、変数を扱う方法とほとんど同じように扱います。一方、#define
は、コンパイラが認識していないものです。プリコンパイラがその値に変換するためです。検索と置換のようなものです。あなたは
#define A 5
、その後
b += A;
を行う場合、プリコンパイラは
b += 5;
に変換し、すべてのコンパイラが見ている番号5.
リテラル定数は、 "string"や2またはfalseのようなプリミティブな表現であり、シンボリックな表現はconst int MagicNumber = 42のような名前を付けるときです。どちらも使用できます式として使用できますが、後者を名前で参照できます。多くの場所から同じ定数を使用する場合に便利です。
はリテラル定数がされています必要な場合はいつでもプログラムに直接入力することができます。例えば
int型tempInt = 10。
tempIntはint型の変数です。 10はリテラル定数です。 10に値を代入することはできず、その値を変更することはできません。記号定数は変数と同じように名前で表される定数です。ただし、変数とは異なり、定数が初期化された後は、その値を変更することはできません。
あなたのプログラムは、学生と別の名前のクラスという名前の1つの整数の変数を持っている場合は、クラスあたり15人が知っていたならば、あなたは、クラスの既知の数を考えると、あなたが持っているどのように多くの学生を計算できます。
学生は=クラス* 15; (以前の記事からの借入)
リテラル定数は、それが必要とされているところはどこでもあなたのプログラムに直接入力した値です。たとえば、
int breakpoint = 10;
可変ブレークポイントは整数(int)です。 10はリテラル定数です。 10に値を代入することはできず、その値を変更することはできません。変数とは異なり、定数は値が代入された後では変更できません(初期化)。
シンボルは、コンパイラのお得な情報を持つものです。この例では、TENは#define関数を使用して作成された記号定数です。 #defineは、プリコンパイラがそれを割り当てられた(定義された)値に変換するため、コンパイラが認識していないものです。プリコンパイラは、プログラム内のすべてのシンボル定数を検索し、値で置き換えます。
#define TEN 10 /* These two lines of code become one... */
breakpoint += TEN; /* after running through the precompiler */
プリコンパイラは、コンパイラがTENを見たことがないだけで、それに割り当てられた値が、10なぜこの便利なのです
Breakpoint += 10;
に変換しますか?ブレークポイントが11に変更されたらどうなるでしょうか?プログラム全体を見て、すべての変数定義をリテラル定数10を使って設定した新しい値に変更するのではなく、1つのシンボル定数... TENを11に変更します。プリコンパイラで変更を行います。
- 1. リテラル文字列と定数の違い
- 2. 関数定義とクラス定義の違いは何ですか
- 3. C++ 11ユーザー定義のリテラル
- 4. C++のメソッド定義と変数宣言
- 5. Cでユーザ定義の関数とリンクリスト
- 6. ユーザー定義リテラルは
- 7. C++の固定幅整数リテラル?
- 8. ユーザー定義の文字列リテラル対。他のユーザー定義リテラル
- 9. 任意のタイプのC++ユーザ定義リテラル
- 10. =>定数と{get; } = Cの定数#
- 11. C++:関数を定義したときの未定義関数エラー
- 12. Clang 3.1とユーザー定義のリテラル
- 13. 関数定義C
- 14. Cヘッダファイルの外部定義定数
- 15. フローと関数の定義
- 16. Cプログラミングの定数変数としてIPアドレスを定義する方法は?
- 17. C++複数の定義[エラー]
- 18. 複数の定義C++
- 19. C++関数の再定義
- 20. クラス変数とクラスレベルで定義された変数との違い
- 21. Linuxユーザーアカウントの変数と定数を定義する方法は?
- 22. C++変数の複数の定義
- 23. C#設定ファイルの複数のCOMポートと設定を定義します
- 24. Haskellの関数定義と引数リスト
- 25. C++の関数定義と変数宣言の不一致?
- 26. 定数ポインタとC定数のポインタとの差
- 27. 未定義のインデックスと未定義の変数のヘルプ
- 28. 変数のユーザー定義リテラルはありますか?
- 29. C++の一時変数と定数の違いは何ですか?
- 30. main()関数とCの他のユーザー定義関数の違いは何ですか?
C言語で(そして質問にはタグが付いています)、 'const int'オブジェクトは定数ではありません。 Cで名前付き定数(記号定数)を生成するには、 '#define'またはenumを使用する必要があります。 – AnT
ハハ、申し訳ありませんが、私はC#の質問をブラウズしていると思いました:) – fejesjoco