工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C++ の変数と型:int、double、char、string、bool

C++ の変数

C++ 変数は、名前付きストレージ機能を提供します。これにより、プログラマーは必要に応じてデータを操作できます。 C++ では、すべての変数に型があります。変数の型は、変数のメモリ マップのサイズとレイアウト、そのメモリ内に格納できる値の範囲、それに適用できる一連の操作を決定するのに役立ちます。

この C++ チュートリアルでは、次のことを学びます:

C++ の変数の基本型

C++ 変数の基本的な型は次のとおりです:

整数:

整数は、小数部または指数部のない数値リテラル (数値に関連付けられている) です。例。 120、-90 など

ダブル:

倍精度浮動小数点値です。例:11.22、2.345

シャア:

文字リテラルは、単一の文字を単一引用符で囲むことによって作成されます。例:「a」、「m」、「F」、「P」、「}」など

フロート:

浮動小数点リテラルは、小数形式または指数形式のいずれかを持つ数値リテラルです。例:1.3、2.6

文字列リテラル:

文字列リテラルは、二重引用符で囲まれた一連の文字です。例:「お元気ですか?」

ブール:

ブール値 true または false を保持します。

C++ で変数を宣言する規則

変数に名前を付けるための一般的な規則を次に示します。

C++ 変数のデータ型

C++ はプリミティブ型のセット全体を定義します

ボイド type には関連付けられた値がなく、いくつかの状況でのみ使用できます。値を返さない関数の戻り型として最も一般的です。

算術型 文字、整数、ブール値、および浮動小数点数が含まれます。さらに2種類に分けると算術型

<オール>
  • 浮動小数点型 . float (または float 型) は 10 進数を表します。 IEEE 標準では、有効桁数の最小数が指定されています。ほとんどのコンパイラは通常、指定された最小値よりも高い精度を提供します。通常、float は 32 ビット、double は 64 ビット、long double は 96 または 128 ビットで表されます。
  • 整数型 (文字、整数、およびブール型を含む)。 ブール type には、True または False の 2 種類の値しかありません。いくつかの 文字 があります そのほとんどは国際化をサポートするために存在します。最も基本的な文字型は char です。 char は、1 バイトを意味する 1 マシン バイトと同じサイズです。
  • 整数型 署名されている場合と署名されていない場合があります。

    署名された型 :負または正の数 (ゼロを含む) を表します。符号付きタイプでは、範囲は +ve 値と -ve 値の間で均等に分割する必要があります。したがって、8 ビットの符号付き char は –127 から 127 までの値を保持します。

    符号なしタイプ :unsigned 型では、すべての値が>=0 です。8 ビットの unsigned char には、0 から 255 まで (両方を含む) を含めることができます。

    変数名または識別子

    識別子は、いくつかの文字、数字、アンダースコア文字、またはそれらの組み合わせで構成できます。名前の長さに制限はありません。

    識別子は

    でなければなりません

    // 4 つの異なる int 変数を定義します

    int guru99, gurU99, GuRu99, GURU99;

    C++ 言語では、その使用のためにいくつかの名前が予約されています。

    さまざまなプログラミング言語で変数に名前を付けるための多くの受け入れられた規則があります。これらの規則に従うと、プログラムの可読性が向上します。

    C++ 変数の宣言と定義

    変数の宣言は、それが定義されているスコープ内のプログラムに名前を認識させます。例:

    int a=5;
    int b;
    char c='A'; 
    
    int a,b;
    a=b=1000;
    List initialization
    int a(5);
    int b{5};

    C++ の const 修飾子

    ユーザーから取得する入力の数を示す変数 buffsize があるとします。ここでは、プログラム全体で buffsize の値を変更したくありません。値が変化してはならないことがわかっている変数を定義したいと考えています。

    そのような場合は、キーワード const を使用してください

    const int bufSize = 512;    // input buffer size

    これは bufSize を定数として定義します。 bufSize を割り当てたり変更しようとすると、エラーが発生します。

    ここでは、作成後に const オブジェクトの値を変更することはできません。宣言と初期化が必須である必要があります。それ以外の場合、コンパイラはエラーをスローします。

    const int i = get_size();  // ok: initialized at run time
    const int j = 42;          // ok: initialized at compile time
    const int k;               // error: k is uninitialized const
    int i = 42;
    const int ci = i;    	   // ok: the value in i is copied into ci 
    

    C++ の変数のスコープ

    スコープは、変数が意味を持つプログラムのスパンです。ほとんどの場合、同じ名前を使用して、異なるスコープ内の異なるエンティティを参照できます。変数は、宣言された時点から、宣言が表示されるスコープの最後まで表示されます。

    #include <iostream>	
    int main()	
    {	
        int sum = 0;	
        // sum values from 1 through 10 inclusive	
        for (int val = 1; val <= 10; ++val)	
            sum += val;  // equivalent to sum = sum + val	
        cout << "Sum of 1 to 10 inclusive is "<< sum <<endl;	
        return 0;	
    }	 
    
    

    このプログラムは、viz、main、sum、および val の 3 つの名前を定義します。名前空間名 std を、その名前空間の他の 2 つの名前 cout と endl と共に使用します。

    ネストされたスコープ

    スコープには他のスコープを含めることができます。含まれる (またはネストされた) スコープは、内部スコープと呼ばれます。包含スコープは外側のスコープです。

    #include <iostream>	
    using namespace std;	
    // Program for illustration purposes only: It is bad style for a function	
    // to use a global variable and also define a local variable with the same name	
    int reused = 42;  // reused has global scope	
    int main()	
    {	
        int unique = 0; // unique has block scope	
        // output #1: uses global reused; prints 42 0	
        cout << reused << " " << unique << endl;	
        int reused = 0; // new, local object named reused hides global reused	
        // output #2: uses local reused; prints 0 0	
        cout << reused << " " << unique << endl;	
        // output #3: explicitly requests the global reused; prints 42 0	
        cout << ::reused << " " << unique << endl;	
        return 0;	
    }	 
    

    アウトプット #1 再利用のローカル定義の前に表示されます。したがって、この出力

    ステートメントは、グローバル スコープで定義されている再利用された名前を使用するものです。このステートメントは

    を出力します

    42 0

    アウトプット #2 再利用のローカル定義の後に発生します。これで範囲内です。したがって、この 2 番目の出力ステートメントは、グローバル オブジェクトではなく、reused という名前のローカル オブジェクトを単純に使用して出力します

    0 0

    アウトプット #3 スコープ演算子を使用して、デフォルトのスコープ規則をオーバーライドします。グローバル スコープには名前がありません。したがって、スコープ演算子 (::) の左辺が空の場合。これは、グローバル スコープの右側にある名前を取得する要求として解釈されます。したがって、式はグローバル再利用と出力を使用します

    42 0

    変数の型変換

    ある型の変数を別の型に変換できます。これは「型変換」として知られています。さまざまな C++ 変数の型を変換するためのルールを見てみましょう:

    bool 変数に非 bool を割り当てると、値が 0 の場合は false になり、それ以外の場合は true になります。

    bool b = 42;            // b is true

    bool を他の算術型の 1 つに割り当てると、bool が true の場合は 1 になり、bool が false の場合は 0 になります。

    bool b = true;
    int i = b;              // i has value 1

    int 型の変数に浮動小数点値を代入すると、値が切り捨てられます。格納される値は小数点以下の部分です。

    int i = 3.14;               // i has value 3

    float 型の変数に int 値を代入すると、小数部がゼロになります。通常、浮動変数が対応できるよりも多くのビットが整数にある場合、精度は失われます。

    Int i=3;
    double pi = i;          // pi has value 3.0

    範囲外の値を符号なし型の変数に代入しようとすると、結果は値 %(modulo) の残りになります

    たとえば、8 ビットの unsigned char 型は、0 から 255 までの値を保持できます。この範囲外の値を割り当てると、コンパイラはその値のモジュロ 256 の余りを割り当てます。したがって、上記のロジックにより、8 ビットの符号なし char に –1 を割り当てると、そのオブジェクトの値は 255 になります。

    unsigned char c = -1;   // assuming 8-bit chars, c has value 255

    signed 型のオブジェクトに範囲外の値を代入しようとすると、結果は予測できません。未定義です。プログラムは外見上は動作しているように見えたり、クラッシュしたり、ガベージ値を生成したりする可能性があります。

    signed char c2 = 256;   // assuming 8-bit chars, the value of c2 is undefined

    コンパイラは、ある型の値を別の型の値が期待される場所で使用する場合に、これらと同じ型の変換を適用します。

    int i = 42;
    if (i) // condition will evaluate as true
    i = 0; 
    

    この値が 0 の場合、条件は false です。他のすべての (ゼロ以外の) 値は true になります。同じ概念により、算術式で bool を使用する場合、その値は常に 0 または 1 に変換されます。その結果、算術式で bool を使用することは通常、ほぼ確実に正しくありません。

    注意:符号付きと符号なしの型を混在させないでください

    符号付きと符号なしが混在する式は、符号付きの値が負の場合、驚くべき間違った結果をもたらす可能性があります。上で説明したように、符号付きの値は自動的に符号なしに変換されます。

    たとえば、

    のような算術式では
    x* y

    x が -1 で y が 1 で、x と y の両方が int の場合、値は予想どおり -1 です。

    x が int で y が unsigned の場合、この式の値は、コンパイル マシンでの整数のビット数によって異なります。私たちのマシンでは、この式は 4294967295 になります。

    変数の登録

    レジスタ変数は、メモリ変数に比べてアクセスが高速です。したがって、C++ プログラムで頻繁に使用される変数は、register を使用してレジスタに入れることができます。 キーワード。 register キーワードは、指定された変数をレジスターに格納するようにコンパイラーに指示します。レジスタに入れるかどうかはコンパイラの選択です。一般に、コンパイラ自体は、いくつかの変数をレジスタに入れることを含むさまざまな最適化を行います。 C++ プログラムでは、レジスタ変数の数に制限はありません。ただし、コンパイラは変数をレジスタに格納しない場合があります。これは、レジスタ メモリが非常に限られており、最も一般的には OS によって使用されるためです。

    定義するには:

    register int i;

    コメント

    コメントは、コンパイラによって無視されるコードの部分です。これにより、プログラマーはソース コード/プログラムの関連する領域にメモを作成できます。コメントは、ブロック形式または単一行のいずれかで提供されます。プログラムのコメントは説明文です。ソースコードを読む人を助けるC++コードに含めることができます。すべてのプログラミング言語では、何らかの形式のコメントを使用できます。 C++ は、単一行コメントと複数行コメントの両方をサポートしています。

    /* This is a comment */
    /* C++ comments can  also 
    * span multiple lines 
    */

    エスケープ シーケンス

    バックスペースや制御文字などの一部の文字には、可視イメージがありません。このような文字は、印刷不能文字と呼ばれます。その他の文字 (一重引用符、二重引用符、疑問符、バックスラッシュ) は、多くのプログラミング言語で特別な意味を持ちます。

    私たちのプログラムは、これらの文字を直接使用することはできません。代わりに、エスケープ シーケンスを使用してそのような char を表すことができます。エスケープ シーケンスはバックスラッシュで始まります。

    C++ プログラミング言語では、いくつかのエスケープ シーケンスが定義されています。

    それは何をしますか? キャラクター

    改行

    \n

    垂直タブ

    \v

    バックスラッシュ

    \\

    改行

    \r

    水平タブ

    \t

    バックスペース

    \b

    疑問符

    \?

    フォームフィード

    \f

    アラート (ベル)

    \a

    二重引用符

    \"

    一重引用符

    \'

    単一の文字であるかのようにエスケープ シーケンスを使用します:

    cout << '\n';        // prints a newline
    cout << "\tguru99!\n";   // prints a tab followed by "guru99!" and a newline 
    

    一般化されたエスケープ シーケンス \x の後に 1 つ以上の 16 進数を続けることもできます。または、\ の後に 1 桁、2 桁、または 3 桁の 8 進数を使用します。一般化されたエスケープ シーケンスは、文字の数値を表します。いくつかの例 (Latin-1 文字セットを想定):

    \7 (bell)    \12 (newline)      \40 (blank)
    \0 (null)    \115 ('M')         \x4d ('M') 
    

    他の文字を使用しているので、定義済みのエスケープ シーケンスを使用できます。

    cout << "Hi \x4dO\115!\n";  // prints Hi MOM! followed by a newline
    cout << '\115' << '\n';     // prints M followed by a newline 
    

    まとめ


    C言語

    1. C# 変数と (プリミティブ) データ型
    2. C++ の変数、リテラル、および定数
    3. C++ データ型
    4. C の変数、定数、およびリテラル
    5. C データ型
    6. C プログラミングにおけるユーザー定義関数のタイプ
    7. C ストレージ クラス
    8. C++ の演算子と例:型とプログラムとは
    9. Java - 変数の型
    10. C - 変数
    11. C - 可変引数