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

コラムについて

このコラムは高品質の C++ チュートリアル コラムであり、常に更新されます。

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

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

もちろん、C++ は移植可能な言語です。つまり、Linux や Windows を使用している友人もこの記事を読んで C++ を始めることができます。

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

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


目次

コラムについて

記録を更新

2023 年 8 月 5 日

序文

C++ の前提条件

翻訳者?G++、Clang とは何ですか?

G++ と Clang の違いは何ですか?

携帯性とは何ですか?

C++ の標準はありますか?

拡張子名

初めての C++

 メイン機能

関数ヘッダー

ボイドメイン()

0を返す

ステートメントとセミコロン

C++ に関する注意事項

エピローグ

素早いページめくり

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


記録を更新

2023 年 8 月 5 日

最初の記事を公開する


序文

この記事では、C++ の基礎知識、コンパイラとは何かについて説明します。Clang と g++ のどちらを選択すればよいでしょうか? C++ の移植性とは何ですか? C++ の標準はありますか? C++の拡張子は何ですか? C++ プログラムを書くのは初めてですが、関数ヘッダーとは何かを理解しています。セミコロンは必要ですか? コメントの書き方は?まだ「#」ですか?


C++ の前提条件

誰もが多かれ少なかれ C++ について聞いたことがあると思いますし、多かれ少なかれ C++ に多くの応用分野があることを知っています。

2002 年以来、C++ は過去数十年間で非常に急速に発展しましたが、そのランキングは常にトップ 5 に入っています。プログラミング言語でのステータスがわかります。

ただ、近年の C/S (クライアント/サーバー) から B/S (ブラウザ/サーバー) への移行や Android フォンの開発において、Java は常にトップに位置しています。Python は、Web 開発におけるクローラーと Django フレームワークの開発効率とともに、今年の激しい人工知能の利点も急上昇しています

しかし、C++ のステータスに対する本当の脅威は存在しないことがわかったようです。

プログラミングの世界では、「C はほとんど何でもでき、C++ はほとんどすべてをうまく実行できる」というよく言われる言葉があり、これは C++ の強力な機能を示しており、C++ 開発コミュニティもますます強化されています。

したがって、 C++ は永続的な言語であることがわかります。

翻訳者?G++、Clang とは何ですか?

記事を読んでいて、その記事が中国語で書かれていない場合、一部の学生は外国語をよく理解できるかもしれませんが、ほとんどの学生は翻訳ツールで翻訳します。

基本的には、理解できない言語を翻訳機に入力するだけで、翻訳機は次のように文を中国語に翻訳します。

「猫」の意味がよくわからないので、翻訳ツールを開いて中国語から英語を選択すると、翻訳ツールは「猫」の意味だと教えてくれます。

オペレーティング システムは、ユーザーが書いた内容を理解できないため、実行可能ファイル ( macOS および Linux の学生の場合は.out 、 Windows の学生の場合は.exe )にコンパイルする必要があります。

G++ と Clang の違いは何ですか?

今のところ、それらに違いはありません。さまざまな C++ 実装間の違いについては後で説明するかもしれませんが、現時点では、それらの間に違いはありません。この記事ではコンパイラとして Clang を選択しており、macOS、Linux、および Windows の学生は次のことを行うことができます。同じコンパイラを使用し、Clang のダウンロード アドレスをここに貼り付けて、macOS に Xcode コマンド ライン ツールをインストールすることをお勧めします。

携帯性とは何ですか?

C++ の移植性とは、さまざまなプラットフォーム、オペレーティング システム、コンパイラ上でコードをコンパイルして実行できる機能を指します。

たぶんわかりますか?まだ知りません?例えば:

macOS を搭載した MacBook でアセンブリ プログラムを作成し、Linux システムを実行しているコンピュータでそれを実行する必要があるとします。その場合、次のものが必要になります。

このプラットフォームに適したプログラムを書き直す必要があります (はい、もっと多くのことを学ぶ必要があるため、壊れてしまいます)

ただし、C++にすると話が変わりますので、ソースコードファイルを渡し、Linux上でコンパイルして使用します。

C++ の標準はありますか?

ISO/IEC 14882:1998 は C++ の最初の国際一般標準であり、次に C++03 (ISO/IEC 14882:2003) が続き、通常は C++98、C++03、および C++ 以降の 11、C++ が使用されます。 17、C++20、おそらく誰もがそれが何を意味するかを理解していますよね?

ISO C++ 標準には ANSI C 標準も組み込まれています。これは、C++ が一般的に C のスーパーセットであるためです。これは、おおよその意味で、あらゆる C プログラムが C++ でスムーズに実行できることを意味します。

拡張子名

拡張子は通常.cpp (C Plus Plus)で、プログラムも.cppで終わります。


初めての C++

最初の.cpp

#include <iostream>

int main(void)
{
    using namespace std;
    cout << "This is my first C++ program!" << endl;
    cout << "Let's go!"
    cout << endl;
    return 0;
}

 メイン機能

first.cppコードの基本構造は次のとおりです。

int main(void)
{
    code
    return 0;
}

これらの行は次のようになります: main(void)という名前の関数があり、関数の動作について説明します。

このコード(上記は省略)を関数定義と呼び、関数ヘッダと関数本体で構成されます。以下、順に説明します。

関数ヘッダー

int main(void)

は関数ヘッダーです。int はその型を表します: integer (後で詳しく説明します。int の後でよく説明します)。 mainは関数名と呼ばれます。 " (void) " は関数が受け入れないことを意味します任意のパラメータ。空の括弧 "()" も使用できます。これは両方と同等です。書籍『C++ Primer Plus』では、これらは空の括弧です。どちらも使用できます。void を追加する方が直感的かもしれませんが、ほとんどは追加されていないので、ここをフォローしてください。

ボイドメイン()

C++ の本を読んで、「一人は一人を救う」という精神を貫いている友人は、全員に厳粛な宣言をしなければなりません。

多くの友人に見てください、メイン関数はint main()ではなくvoid main()として書かれています

この 2 つは同じであると本の中で読むことができます。たとえば、「C++ Primer Plus」には次のように書かれています。

プログラマの中には、次の関数ヘッダーを使用し、return ステートメントを省略する人もいます。

void main()

void 戻り値の型は関数が値を返さないことを意味するため、これは論理的に一貫しています。このバリアントは多くのシステムで動作しますが、現在の標準で強制されるオプションではないため、一部のシステムでは動作しません。したがって、読者はこの形式を避け、代わりに、それほど手間がかからない C++ 標準形式を使用する必要があります。

ここで言っておきますが、void main()の書き方は根本的に間違っており、完全に間違っています。

main関数の戻り値に気づいていますか?戻り値なんてないよ、という人もいるかもしれませんが、プログラムのCRT起動コードを深く掘り下げてみると…。

__initenv = envp;
mainret = main(argc, argv, envp);
if ( !managedapp )
   exit(mainret);
if (has_cctor == 0)
   cexit();

C99 標準によれば、関数自体に戻り値が定義されていない場合でも、コンパイラは刺激プログラム (実行状態) に戻るために戻り値を追加します。また、 void main() はC および C++ では定義されていません。

C++ の父であるBjarne Stroustrup は自身のホームページの FAQ に明確に書いています

void main( ) { /* ... * / } の定義は C++ ではなく、C++ であったことも、C でさえありません。

翻訳: void main() はC++ または C には存在しませんでした

言い換えれば、void main() は一部のコンパイラによって渡される可能性がありますが、ISO 標準ではvoid main() がまったく定義されておらず、一部のコンパイラは動作しないため、悲しいことになるかもしれません:(, C++ を使用する学生int mainまたはint main(void)を使用します

Cを勉強した友達はここを見てください

C で次のように記述する方法があります。

main()

C で戻り値の型を省略することは、値の型をintとして返すことと同じですが、この使用法は C++ では排除されます。

0を返す

最後に戻り値があり、このプログラムに問題がないことをオペレーティング システムに伝え、0 以外の値はエラーとみなされます。

ステートメントとセミコロン

ステートメントは実行されるアクションです。ソース コードを理解するには、コンパイラは 1 つのステートメントがいつ終了し、別のステートメントがいつ始まるかを知る必要があります。一部の言語ではステートメント区切り文字が使用されます。例: FORTRAN はステートメントを行末で区切りますが、Pascal はセミコロンを使用してステートメントを区切ります。Pascal では、ステートメントの後 END より前など、場合によってはセミコロンを省略できます。この場合、2 つのステートメントは実際には分離されていません。ただし、C++ も C と同様に、区切り文字の代わりにターミネータを使用します。ターミネータはセミコロンであり、ステートメントの終了マーカーであり、ステートメント間のマーカーではなく、ステートメントの不可欠な部分です。結論は次のとおりです。C++ ではセミコロンを省略できません。

他の言語を学んだ生徒は少し不快になるかもしれません

C++ に関する注意事項

C++ では「//」二重スラッシュがコメントとして使用され、コメントの背後にあるものはプリコンパイル中に削除されます。その後、ファイル ヘッダーでのプリコンパイルについて詳しく説明します。

もちろん、C スタイルのコメントも使用できます。つまり、/* と */ の間の情報がコメントになります。CSS を学習した学生にはよく知られているかもしれません (笑)

Python を学習した学生は、コメントが #、no、no、no ではないことを覚えています。


エピローグ

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

この記事について質問がある場合は、コメント欄でご指摘ください。この記事が気に入ったら、いいね、コメント、フォローをお願いします

あなたの周りにあなたと同じようにこの分野について言及した人、または彼と一緒に進歩したい人がいたら、記事を共有してください

4008語、両親8人、子供4人、孫6人、ひ孫2人


素早いページめくり

ブロガーによるその他の質の高い記事:

シンプルな Linux をクロップする

Hexo チュートリアル、これを読んでください - How to シリーズ 

CSDN で高品質のブログを書く方法 - How to シリーズ

Apple WWDC23 開発者カンファレンス - Apple の野心


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

参考記事 

C++を学ぶと何の役に立つのでしょうか? C++ の未来はどこにあるのでしょうか? - ほぼ知っています

C/S アーキテクチャと B/S アーキテクチャの違い (原理、利点と欠点、適用範囲) と主流の Web アプリケーション プラットフォームの比較、Web の動作原理_b/s と c/s の違い_MarsYjZ のブログ - CSDN ブログ

https://wenku.csdn.net/answer/18a7406a5b2e4d178d90cda0b3b07288

コンパイラとは何ですか? 初心者向けに説明された C のコンパイラー

アセンブリで書かれたプログラムの移植性が低いのはなぜですか?

C/C++ の移植性をより深く理解するにはどうすればよいでしょうか? - ほぼ知っています

ISO - 検索

C/C++ コードの前処理、コンパイル、アセンブル、リンクの全プロセスを詳しく説明します。 

 Clang 16.0.0 リリース ノート — Clang 16.0.0 ドキュメント

[Switch] void main() または int main()_C 言語では void は省略できますか?_内容--Changle のブログ-CSDN ブログ

参考書 

C++ 入門プラス

おすすめ

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