C++

 Computer >> コンピューター >  >> プログラミング >> C++
  1. C++の比較演算子(==)とstd::string::compare()の違いを徹底解説

    C++の比較演算子(==)とstd::string::compare()の違いとは? C++で文字列を比較する方法として、比較演算子 == と std::string::compare() の2つがあります。結論から言うと、この2つの違いは戻り値だけです。実際、string::operator==() は内部的に string::compare() を呼び出して実装されています。 戻り値の違い 比較演算子(==)は、2つの文字列が等しいかどうかを示す bool 型の値(true / false)を返します。一方、compare() は、2つの文字列が互いにどのような関係にあるかを示す int

  2. 【C++】セミコロンなしでプログラムを書く方法とは?

    セミコロンなしでC++プログラムを書くには?C++プログラムをセミコロンなしで記述する方法はいくつか存在します。ただし、これは極めて悪い作法であり、実際のコードで絶対に使用してはいけません。本記事はあくまで情報提供を目的として紹介するものです。セミコロンなしでC++プログラムを書く最も簡単な方法は、if文を利用することです。C++ではほぼすべての文を式として扱うことができます。そのため、処理したい文をif文の条件式(丸括弧)の中に配置すれば、文末にセミコロンを付ける必要がなくなります。コード例#include<iostream> int main() {   &

  3. C++でsizeof()が演算子として実装されている理由とは?

    実は、sizeofはC++における本来の意味での演算子ではありません。それは、引数のサイズに等しい値を挿入するための特殊な構文にすぎません。sizeofは実行時のサポートを必要とせず、プログラムの実行中に何らかの処理を行うこともありません。さらに、sizeofはオーバーロードすることもできません。その理由は、配列内のポインタをインクリメントするといった組み込みの基本操作が、暗黙的にsizeofの結果に依存しているためです。もしsizeofをオーバーロードできてしまうと、これらの言語の根幹に関わる動作の一貫性が損なわれてしまいます。C標準におけるsizeofの扱いC言語の標準規格では、sizeo

  4. C++プログラムで閉じ波括弧(})の後にセミコロンが必要になるのはいつか?

    閉じ波括弧(})の後にセミコロンが必須となるケース C++では、閉じ波括弧(})の直後が宣言の終わりに当たる場合、セミコロン(;)が必須となります。波括弧が使われる主な場面は、class、enum、struct の宣言や、初期化構文(配列やオブジェクトの初期化)です。これらの宣言文の末尾には、必ずセミコロンを付ける必要があります。 セミコロンが必要な例 class X {}; // struct の場合も同様 enum Y {}; int z[] = {1,2}; 上記のように、クラスや列挙型の宣言、配列の初期化リストでは、閉じ波括弧の後にセミコロンを忘れるとコンパイルエラーになるた

  5. C++の等価演算子とは?== と != の基本と使い方を解説

    C++における等価演算子には、「等しい」ことを判定する ==(イコール)と、「等しくない」ことを判定する !=(ノットイコール)の2種類があります。これらの演算子は、その名前の通り直感的な動作を行います。等価演算子は二項演算子であり、左辺と右辺のオペランドが厳密に等しいかどうかを比較します。== と != は関係演算子(< や > など)よりも優先順位は低いものの、動作の仕組みはよく似ています。また、これらの演算子の評価結果の型は bool 型になります。各演算子の動作等価演算子(==):両方のオペランドが同じ値である場合に true(1)を返し、異なる場合は false(0)を返

  6. C++のスコープ解決演算子(::)とは?使い方と具体例をわかりやすく解説

    ::(スコープ解決)演算子は、変数のスコープによって隠れてしまった名前へアクセスし、引き続き利用できるようにするための演算子です。この演算子は、単項演算子としても二項演算子としても使用できます。 ブロックやクラス内で、同じ名前を持つ別の宣言によって名前空間スコープやグローバルスコープの名前が隠されている場合には、単項のスコープ解決演算子が役立ちます。例えば、my_varという名前のグローバル変数と、同名のローカル変数が存在する場合、グローバル側のmy_varにアクセスするにはスコープ解決演算子を使う必要があります。 使用例1:グローバル変数へのアクセス #include <iostre

  7. C++のスコープ解決演算子(::)とは?基本的な使い方を解説

    C++におけるスコープ解決演算子(::)は、変数のスコープによって隠されてしまった名前にアクセスするために使用される演算子です。この演算子を使うことで、隠れた名前でも引き続き利用できるようになります。スコープ解決演算子は、単項演算子としても二項演算子としても使用できます。 グローバル変数へのアクセス ブロックやクラス内で同じ名前の宣言によって、名前空間スコープやグローバルスコープの名前が隠されている場合には、単項のスコープ解決演算子が役立ちます。例えば、my_varという名前のグローバル変数と、同じくmy_varという名前のローカル変数が存在する場合、グローバル変数にアクセスするにはスコープ解

  8. C++のスコープ解決演算子(::)とは?必要性と使い方をわかりやすく解説

    C++におけるスコープ解決演算子(::)は、変数のスコープによって隠されてしまった(見えなくなった)名前にアクセスするための演算子です。大きな特徴は、単項演算子としても二項演算子としても使えるという点にあります。 単項スコープ解決演算子:グローバル変数へのアクセス 名前空間スコープやグローバルスコープに存在する名前が、ブロック内やクラス内で同じ名前の宣言によって隠されている場合、単項のスコープ解決演算子を使えば、隠された元の名前にアクセスできます。 例えば、グローバル変数 my_var とローカル変数 my_var が同時に存在する状況を考えてみましょう。このとき、グローバル側の my_va

  9. C++のキーワード(予約語)とは?95個の一覧と分類を徹底解説

    C++のキーワード(予約語)とは C++における「キーワード(keyword)」とは、コンパイラによってその意味があらかじめ定義されている単語のことです。そのため、キーワードを変数名や関数名といった識別子(identifier)として使用することはできません。 なお、キーワードは「予約語」と「事前定義識別子」の総称です。事前定義識別子とは、コンパイラが定義しているものの、ユーザー側で意味を変更できる識別子を指します。 mainとelseの違いで理解する たとえば、main関数の中に「main」という名前の変数を宣言し、値を初期化して出力することは可能です(ただし、これは動作確認のためだけに行い

  10. 【C++入門】演算子の優先順位と結合性を一覧表でわかりやすく解説

    C++における演算子の優先順位と結合性とは式の中でどの演算を先に行うかを決めるのが演算子の優先順位(precedence)です。一方、結合性(associativity)とは、同じ優先順位を持つ演算子が括弧なしで並んでいる場合に、左から評価されるか、右から評価されるかを決める性質のことを指します。この2つのルールによって、複雑な式の評価結果が決まります。たとえば、掛け算(*)は足し算(+)よりも高い優先順位を持っています。そのため、両方が混在する式では、必ず掛け算が先に実行されます。具体例:x = 7 + 3 * 2 の評価順序次の式を見てみましょう。x = 7 + 3 * 2;この場合、xに

  11. C++の三重音字(トリグラフ)とは?歴史的背景と置換一覧を解説

    三重音字(トリグラフ)とはISO-646文字セットには、C言語の構文で使われる文字のすべてが含まれているわけではありません。そのため、キーボードやディスプレイの一部が特定の文字を扱えないシステムが存在していました。この問題を解決するために考案されたのが「三重音字(トリグラフ/trigraph)」です。これは、3文字の組み合わせで1つの文字を表現する記法であり、C言語では他のどの処理よりも先に、ソースコード内に現れた以下の3文字の並び(「トリグラフ列」)が、対応する1文字に置き換えられます。トリグラフ置換後の文字トリグラフ置換後の文字トリグラフ置換後の文字??=#??([??<{??/\?

  12. C++のフレンド関数とフレンドクラスの基本を解説

    C++におけるフレンド関数(friend function)とは、クラスのスコープ外で定義される関数でありながら、そのクラスのすべてのprivateメンバーおよびprotectedメンバーにアクセスする権限を持つ特別な関数です。フレンド関数のプロトタイプ(宣言)はクラス定義の中に記述しますが、あくまで「友達」として扱われるだけであり、クラスのメンバー関数にはなりません。この点は重要なポイントです。フレンドとして指定できるものフレンドとして宣言できるのは、以下のようなものです。通常の関数関数テンプレート他のクラスのメンバー関数クラス全体(この場合、そのクラスのすべてのメンバーがフレンドになります

  13. C++の予約語(キーワード)とは?全95個を一覧表付きで徹底解説

    C++の予約語(キーワード)とは?予約語(reserved word/リザーブドワード)とは、変数名・関数名・ラベルなどの識別子として使用できない単語のことです。これらは「使用のために予約されている」ため、このように呼ばれます。ただしこれはあくまで構文上の定義であり、予約語の中には特定の意味を持たないものも存在します。現在のC++には、合計95個の予約語が定義されています。これらの予約語は、由来や用途によっていくつかのグループに分類すると、理解しやすくなります。C++の予約語の分類1. C言語から引き継がれた予約語(32個)最初のグループは、C言語に元々存在し、そのままC++へと引き継がれた予

  14. C++の識別子とは?命名ルールと具体例をわかりやすく解説

    C++における識別子(identifier)とは、変数、関数、クラス、モジュールなど、プログラマが定義するさまざまな要素に名前を付けて識別するために使われる名称です。識別子の命名には以下のルールがあります。先頭は半角アルファベットの大文字(A〜Z)、小文字(a〜z)、またはアンダースコア(_)で始める必要があります。2文字目以降は、英字・数字(0〜9)・アンダースコアを自由に組み合わせられます。識別子の中に「@」「$」「%」などの記号(句読点・特殊文字)を使うことはできません。大文字と小文字は区別されるC++は大文字と小文字を厳密に区別するプログラミング言語です。そのため、「Manpower」

  15. C++の単項演算子とは?種類と使い方を徹底解説

    単項演算子とは単項演算子とは、たった1つのオペランドに対して作用し、新しい値を生成する演算子のことです。C++にはさまざまな単項演算子が用意されており、それぞれ異なる役割を持っています。本記事では、代表的な単項演算子の種類とその動作について詳しく解説します。C++の主な単項演算子一覧間接参照演算子(*) - ポインタ変数に対して作用し、ポインタが指すアドレス上の値と等価なl値を返します。この操作は「デリファレンス(参照外し)」とも呼ばれます。アドレス演算子(&) - オペランドのアドレスを取得します。オペランドには、関数指定子、またはビットフィールドではなくregister記憶クラス指

  16. C++でwhile文やif文の直後にセミコロンを付けるとどうなる?

    はじめにC++では、while文やif文の直後にうっかりセミコロン(;)を付けてしまうことがあります。一見すると些細な記述ミスに思えますが、このセミコロンの有無によってプログラムの動作は大きく変わります。本記事では、その仕組みをわかりやすく解説します。セミコロン付きのwhile・if文の動作たとえば、次のようなコードを考えてみましょう。while (expression);この場合、条件式が真であれば、ループ本体として「空の文(何もしない文)」が実行され続けるため、無限ループに陥ります。一方、条件式が偽であれば、ループ本体は一度も実行されません。同様に、次のようなif文ではどうなるのでしょうか

  17. C++でセミコロンなしにHello Worldを出力するテクニック

    C++のプログラムをセミコロン(;)を使わずに書く方法はいくつかあります。ただし、これはあくまで情報提供のための内容であり、実際のコードでは絶対に使うべきではない悪い作法である点に注意してください。if文を使った最も簡単な方法セミコロンなしでC++プログラムを書く最も簡単な方法は、if文を利用することです。C++ではほとんどすべての文を式として扱うことができます。そのため、文を空の中括弧を持つif文の中に置けば、末尾にセミコロンを付ける必要がなくなります。コード例#include<iostream> int main() { if (std::cout <<

  18. Pythonのforループをwhileループに変換する方法をわかりやすく解説

    Pythonでは、forループはwhileループと異なり、反復回数を管理するためのカウント用変数を必要としません。forループはリストやrangeなどのイテラブル(反復可能オブジェクト)から自動的に要素を取り出して処理を進めるためです。 そのため、forループを同等の動作をするwhileループに書き換える場合は、「カウント変数を自分で管理する必要がある」という点を考慮することが重要になります。 forループの基本例 まず、range関数を使って0から4までの値を出力するシンプルなforループを見てみましょう。 for x in range(5): print(x) このコードを実行する

  19. C++における空白(ホワイトスペース)の基本:無視されるケースと意味を持つケース

    C++における空白(ホワイトスペース)とは「空白(ホワイトスペース)」とは、コードを見やすく整形する目的で使用される文字の総称です。C++では、主に半角スペース、タブ、そして(場合によっては)改行がこれに該当します。C++コンパイラは、いくつかの小さな例外を除き、空白を基本的に無視します。例えば、以下の4行はすべて同じ意味として処理されます。cout<<"Hello";cout << "Hello";cout << "Hello" ;cout<<

  20. C++のインクリメント(++)・デクリメント(--)演算子のオーバーロード徹底解説

    C++には、インクリメント(++)とデクリメント(--)という2つの重要な単項演算子が用意されています。これらの演算子は、ユーザー定義クラスに対してオーバーロードすることで、オブジェクトを直感的に操作できるようになります。 次の例では、インクリメント演算子(++)を前置(prefix)と後置(postfix)の両方の使い方に対応させてオーバーロードする方法を解説します。同様の方法で、デクリメント演算子(--)もオーバーロード可能です。 前置と後置の違い 前置演算子(++T)は、値をインクリメントした後の値を返します。一方、後置演算子(T++)は、インクリメントする前の元の値を返してからインクリ

Total 5990 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:7/300  20-コンピューター/Page Goto:1 2 3 4 5 6 7 8 9 10 11 12 13