C++ チュートリアル - How to C++ シリーズ コラムのパート 6

コラムについて

このコラムは質の高い C++ チュートリアル コラムです。第 0 回の記事をまだ読んでいない場合は、ここをクリックして第 0 回の記事に進んでください。

このコラムでは一貫してオペレーティング システム: macOS Ventura、コード エディタ: CLion、C++ コンパイラ: Clang を使用します。

いつも付き合ってくれた友達、これからもよろしくお願いします^_^

ブロガーからのフィードバックは非常にタイムリーです。読んでいるときに問題が発生した場合は、コメント エリアで直接質問できます。ブロガーは、閲覧後 24 時間以内にフィードバックを返します。

C++ チュートリアル - C++ の使い方シリーズ コラム パート N

目次

コラムについて

記録を更新

2023 年 9 月 17 日

序文

変数

コンセプト

名前

整数

コンセプト

整数型

ビットとバイト

次の記事のプレビュー

結論

素早くページをめくる

この記事は記事や書籍を参照しています


記録を更新

2023 年 9 月 17 日

最初の記事を公開する


序文

変数とは何ですか? 何と呼べばいいでしょうか?変数には型があるのでしょうか? それはどういう意味ですか?さまざまな種類の変数の違いは何ですか? ビットとバイト?


変数

コンセプト

先ほど、C++ の変数の特徴について簡単に説明しましたが、今日は、あなたにとって非常に身近な友人となるこの友人について説明しましょう。

#include <iostream>

int main(void)
{
    int hello;
    hello = 5;
    
    return 0;
}

このコードでは整数変数を宣言していますが、その変数は何でしょうか?

hello という名前を使用して、整数値 (ここでは 5) を表します。実際、プログラムは整数を格納できるメモリを見つけ、このメモリ ユニットに hello のマークを付けて、このメモリ ユニットに 5 をコピーします。

その後、プログラム内で「hello」を使用して、このメモリの場所にアクセスできます。これらのステートメントでは、値がメモリ内のどこに保存されるかはわかりませんが、プログラムはこの情報を記録します。実際、hello のメモリ アドレスは & 演算子を使用して取得できます。これについては、データを識別するもう 1 つの方法 (すぐに説明します) ポインターを紹介するときに後で紹介します。

それは単純に次のように考えることができます: 人生において、私たちはピーナッツ油のボトルを購入し、それから油を油樽に入れ、その油樽にピーナッツ油というラベルを貼ります。その後、家族や自分自身がそれを使用したいとき、私たちはピーナッツ油について話します、それが何なのか、そしてそれがどこにあるのかを知っています

ピーナッツ油のラベルは変数に例えることができます。油は変数に格納するものであり、油バレルはメモリです。

名前

しかし、このラベルをどのように適用するのでしょうか? 実際、最良の遊び方は、何でも書くことです。

はい、この方法が最も単純で理解しやすいです。たとえば、合計の結果を格納するために使用される変数を表したい場合は、それに sum という名前を付けることができます。それを理解できない人はいないでしょうし、何を尋ねに来る人さえいません。それはそうですが、そうしなければなりません 文章は非常に長く、複雑で乱雑です(私はこの種の人々が最も嫌いです[コードヒステリック])、そしてsを書きます、誰がこれを理解できますか?

a1、c1、v1、このようなものは書かないでください。可読性は「規格外」です。

議論の余地のない変数名を書くことは、すべてのプログラマが持つべき資質であるべきです。標準に従って記述してください。もちろん、いくつかの省略形を記述しても構いません。たとえば、データベースの「データベース」は「db」と省略できます。 「加算」は省略できます。「加算」、この略語は、s または fghjk と省略される sum とは異なり、議論の余地はありません。誰かが略語について口論した場合、「」と書くよりも「加算」と書いたほうが、間違いなく大きな声で話すことができます。 s」と、この状況はまさに相手の問題です。

変数名は必ず通常の英語で書いてください やり方がわからない場合は翻訳ソフトを使って翻訳してください コードフェチの人だけでなく誰でも我慢できません待ってください。

つまり、ピンインや中国語で書いたら自分の問題ですが、普通の英語で書いたら、相手が来たときに問題になるということです。

また、誰もが次の規則を遵守することが最善です。

  • 名前に使用できるのは、英字、数字、アンダースコア (_) のみです。名前の最初の文字に数字を使用することはできません
  • 大文字と小文字を区別する
  • C++ キーワードを名前として使用することはできません。2 つのアンダースコア、または 1 つのアンダースコアと大文字で始まる名前は、実装 (コンパイラーとそれが使用するリソース) 用に予約されています。アンダースコアで始まる名前は、グローバル識別子として使用するために実装に予約されています。
  • C++ には名前の長さに制限がなく、名前内のすべての文字には意味があります。

最後から 2 番目のポイントは、_time_stop や _Donut のような名前を使用してもコンパイラ エラーが発生するのではなく、未定義の動作が発生するという点で、前のポイントとは少し異なります。言い換えれば、結果がどうなるかはわかりません。コンパイラ エラーが発生しない理由は、そのような名前が不正ではなく、実装/コンパイラで使用するために予約されているためです (グローバル
名は、後で説明する名前が宣言されている場所を参照します)。

2 つ以上の単語を組み合わせて名前を形成する場合、sum _the_inputs のように単語をアンダースコア文字で区切るか、yourEyes( のように 2 番目の単語から始まる各単語の最初の文字を大文字にするのが一般的です。 C プログラマーは C の方法でアンダースコアを使用する傾向がありますが、Pascal プログラマーは大文字を好む傾向があります) どちらの形式でも、carDrip と CardRip、またはボートスポーツとボートポートのような単語を簡単に区別できます。

変数の命名スキームには、関数の命名スキームと同様に、議論すべき多くのトピックがあります。実際、この主題は最も鋭い反論のいくつかを引き起こします。繰り返しますが、関数名と同様に、C++ コンパイラは変数名が正当である限り問題ありませんが、一貫性のある正確な個人的な命名規則が役に立ちます。

関数の命名と同様、変数の命名では大文字と小文字の区別も重要な問題ですが、多くのプログラマは変数名に他の情報、つまり変数の型や内容を説明するプレフィックスを追加する場合があります。たとえば、整数変数に「myWeight」「nMyWeight」という名前を付けることができます。接頭辞 n は整数値を表すために使用されます。この接頭辞は、コードを読むときや変数の定義があまり明確ではないときに役立ちます。あるいは、この変数を「intMyWeight」と呼ぶこともできます。これは、より正確で理解しやすいものです。この方法でよく使用されるその他の接頭辞は次のとおりです。「str」または「sz」(ヌル終了文字列の場合)、b(ブール値の場合)、p(ポインタの場合)、c(単一文字の場合)

C++ についてさらに学ぶと、接頭辞付きの命名スタイルの例が数多く見つかります (定数や NULL で終わる文字列への長いポインターを含むクラス メンバー値である気の利いた m_lpctstr 接頭辞など)スタイルを使用するかどうかは完全にあなた次第です。C++ のすべての主観的なスタイルの中で、一貫性と精度が最も重要です

整数

コンセプト

整数とは、2、98、-5468、0 などの小数部分のない数値です。

多くの整数があり、無限の整数が非常に大きいと考えられる場合、限られたコンピューター メモリですべての整数を表すことは不可能です。したがって、言語はすべての整数のサブセットしか表現できません。一部の言語では整数型が 1 つだけ提供されますが (1 つの型ですべての要件を満たします)、C++ では複数の整数型が提供されるため、プログラムの特定の要件に基づいて最も適切な整数型を選択できます。

C++ 整数型が異なれば、整数を格納するために使用するメモリの量も異なります。使用するメモリの量が多いほど、表現できる整数値の範囲は大きくなります。さらに、一部の型 (符号付き型) は正と負の値を表現できますが、一部の型 (符号なし型) は負の値を表現できません。幅という用語は、整数を格納するときに使用されるメモリの量を表すために使用されます。使用するメモリが増えると、メモリの幅も広くなります。C++ の基本的な整数型 (幅の増加順に並べられています) は、char、short、int、long、および C++11 の新しい Long Long です。各型には、符号付きバージョンと符号なしバージョンがあるため、合計 10 個あります。 . タイプからお選びいただけます。これらの整数型については、以下で詳しく説明します。char 型にはいくつかの特別なプロパティがあります (数値ではなく文字を表すために最も一般的に使用されます)

Python を学習する学生は、ブール型 (bool) も整数型のサブタイプではないのではないか、なぜカウントされないのかと疑問に思うかもしれません。C++ では、bool は独立したデータ型であり、整数式 (0 および 1) を持つことができますが、それ自体は整数やデータ型とは何の関係もありません。

整数型

コンピュータのメモリはビットと呼ばれる単位で構成されています。C++ の short、int、long、long long 型は、値を格納するために異なるビット数を使用することで、最大 4 つの異なる整数幅を表すことができます。各タイプの幅がすべてのシステムで同じであれば非常に便利です。たとえば、short が常に 16 ビットの場合、int は常に 32 ビットなどになります。しかし、それはそれほど単純ではなく、単一のオプションですべてのコンピューター設計要件を満たすことはできません。C++ は、(C から借用した) 最小長を保証する柔軟な標準を提供します。

  1. short は少なくとも 16 ビットです
  2. int は少なくとも短いものと同じ長さです
  3. long は少なくとも 32 ビットであり、少なくとも int と同じ長さです
  4. long long は少なくとも 64 ビットであり、少なくとも同じ長さです。

ビットとバイト

コンピュータのメモリの基本単位はビットです。ビットはオンまたはオフにできるスイッチであると考えてください。Off は値 0 を表し、on は値 1 を表します。8 ビットのメモリ ブロックは 256 通りの異なる組み合わせに設定できます。各ビットは 2 つの設定を持つことができるため、8 ビットの組み合わせの合計数は 2×2 になります。 ×2×2 ×2×2×2×2、つまり256です。したがって、8 ビット単位は 0 ~ 255 または -128 ~ 127 を表すことができます。数字が追加されるたびに、組み合わせの数が 2 倍になります。これは、16 ビット単位は 65,536 の異なる値に設定でき、32 ビット単位は 4294672296 の異なる値に設定でき、64 ビット単位は 18446744073709551616 の異なる値に設定できることを意味します。比較のために、unsigned long は現在の地球上の人口や天の川の星の数を保存できませんが、long long は保存できます。

バイトとは通常、8 ビットのメモリ単位を指します。この意味で、バイトとはコンピュータのメモリの量を表す測定単位を指し、1KB は 1024 バイトに相当し、1MB は 1024KB に相当します。ただし、C++ ではバイトの定義が異なります。C++ バイトは、少なくとも実装の基本文字セットに対応できる連続ビットで構成されます。つまり、可能な値の数は文字数以上である必要があります。米国では、通常、基本的な文字セットは ASCII 文字セットと EBCDIC 文字セットで、どちらも 8 ビットに対応できるため、これら 2 つの文字セットを使用するシステムでは、通常、C++ バイトに 8 ビットが含まれます。ただし、国際的なプログラミングでは Unicode などのより大きな文字セットの使用が必要な場合があるため、実装によっては 16 ビット、さらには 32 ビットのバイトを使用する場合があります。オクテットという用語を 8 ビット バイトの意味で使用する人もいます

現在、多くのシステムは最小長、つまり短い場合は 16 ビット、長い場合は 32 ビットを使用しています。これでも、int には複数のオプションが残されており、標準に準拠しながら 16、24、または 32 ビット幅にすることができ、さらには、long と long long が少なくとも 64 ビット長であるため、64 ビット幅にすることもできます。通常、古い IBM PC 実装では int の幅は 16 ビット (short と同じ)、Windows、macOS、およびその他の多くのマイクロコンピュータ実装では 32 ビット (long と同じ) です。一部の実装では、int の処理方法を選択できます。型の幅は実装ごとに異なるため、C++ プログラムをある環境から別の環境に移動するとき (同じシステム上で異なるコンパイラを使用する場合を含む)、問題が発生する可能性があります。しかし、少し注意すれば、この問題を最小限に抑えることができます

変数は、int と同様に、次の型名を使用して宣言できます。

#include <iostream>

int main(void)
{
    int n_hello;
    hello = 5;

    short s_hello;
    s_hello = 5;

    long l_hello;
    l_hello = 5;

    return 0;
}

 short は short int の省略形で、long は long int の省略形ですが、ほとんどの人は長い形式を使用しません。

次の記事のプレビュー

次回の記事では、各環境における変数のサイズについて詳しく説明します(テーブルを列挙するのは面倒なので、それを確認するプログラムを書いてみませんか?)


結論

著者は、問題を抱えた友人が問題を解決できるよう手助けすることがよくあります。質問がある場合は、コメント欄で直接指摘してください。著者は閲覧後 24 時間以内に返信します。

この記事についてご不明な点がございましたら、コメント欄でご指摘ください。この記事が気に入っていただけましたら、いいね、コメント、フォローをしていただければ幸いです。

あなたの周りにこの分野について話した人、または一緒に進歩したいと考えている人がいる場合は、この記事を共有してください。

4363語、親8人、子供5人、孫1人


素早くページをめくる

第0章               第2章                第4章

パート 1               パート 3                パート 5


この記事は記事や書籍を参照しています

参考記事

https://www.cnblogs.com/chuanzhang053/p/10582861.html

プログラミング変数の命名規則とプログラミング単語略語辞典 

C言語ではboolは1バイトを占めますか?1 つの位置のみを占める場合はどうすればよいでしょうか? _百度は知っています 

ウェンシンイーヤン 

参考書 

C++ 入門プラス

おすすめ

転載: blog.csdn.net/cat_bayi/article/details/132944632