C++ の単項演算子

C No Dan Xiang Yan Suan Zi



C++ では、単項演算子は 1 つのオペランドのみに作用する演算子です。単項演算子は、単数の変数または式に関連付けられた値の操作を可能にすることで、C++ で重要な役割を果たします。これらの汎用演算子は、変数の増減、数値の符号の変更、論理否定の実行など、さまざまな状況で使用できます。この記事では、C++ の単項演算子の型と用途について説明し、理解を深めるために複数の例を提供することで、C++ の単項演算子について説明します。

C++ はいくつかの単項演算子をサポートしており、それぞれが変数を操作する際に独自の目的を果たします。ループやさまざまなアルゴリズムで一般的に使用されるインクリメント演算子とデクリメント演算子から始めましょう。

例 1: インクリメント (++) およびデクリメント (-) 演算子

インクリメント (++) およびデクリメント (-) 単項演算子は、変数の値をそれぞれ 1 ずつ増加または減少させて変更するための C++ の基本的なツールです。インクリメント演算子 (++) は変数の値に 1 を加算し、デクリメント演算子 (-) は 1 を減算します。これらの演算子は整数、浮動小数点、およびポインター変数に適用できるため、使用方法が柔軟になります。







実際の例を通じてこれらの演算子を調べてみましょう。



#include
を使用して 名前空間 標準 ;

整数 主要 (
{

整数 カウンター = 0 ;

// インクリメント演算子
コート << '初期値: ' << カウンター << 終わり ;

カウンター ++ ;
コート << 「増分後の値:」 << カウンター << 終わり ;

// デクリメント演算子
カウンター -- ;
コート << 「減分後の値:」 << カウンター << 終わり ;

戻る 0 ;
}

この単純な C++ プログラムには、必要な入出力ストリーム ライブラリが「#include 」で含まれています。 「main()」関数内で、「counter」という整数変数をインスタンス化し、初期値 0 を割り当てます。「cout」ステートメントを使用して、「counter」の初期値をコンソールに出力します。私たちのデモンストレーションのベースラインです。次に、インクリメント演算子 (counter++) を使用して、「counter」変数の値を 1 ずつ増やします。



この操作の後、別の cout ステートメントを使用して、更新された「counter」の値が表示されます。続いて、デクリメント演算子 (counter-) を使用して、「counter」の値を 1 ずつ減らします。その後、結果がコンソールに表示されます。最終的に、プログラムは「return 0;」で終了します。実行が成功したことを示すステートメント。





出力画像には、初期値、増加後の値、減少後の値が表示されます。



例 2: 正 (+) および負 (-) 演算子

正の単項演算子はめったに使用されませんが、負の演算子は変数の符号を変更する場合に基本的に使用されます。

#include
使用する 名前空間 標準 ;

整数 主要 ( {
整数 正の値 = 10 ;
整数 負の値 = - 正の値 ;

コート << '正の値: ' << 正の値 << 終わり ;
コート << 「負の値:」 << 負の値 << 終わり ;

戻る 0 ;
}

このコード例では、「positiveValue」と「negativeValue」という 2 つの整数変数を初期化します。 「positiveValue」には値 10 が割り当てられます。次に、「negativeValue」を宣言し、単項マイナス演算子を使用して「positiveValue」の否定を割り当てます。この演算子は、元の値の符号を効果的に変更します。次に、「cout」ステートメントを使用して、正の出力と負の出力の両方をコンソールに表示します。最後に、プログラムは main 関数が正常に完了したことを示す 0 を返します。

このプログラムを実行すると、正の値と負の値が出力されます。

例 3: 論理 NOT (!) 演算子

C++ の単項演算子。「!」で示されます。記号は、論理 NOT 演算子として知られています。これは、指定された式の真理値を反転するように設計されています。これは、通常は論理式または条件である単一のオペランドに対して動作します。論理 NOT 演算は、オペランドが「false」の場合は「true」の結果を生成し、オペランドが「true」の場合は「false」の結果を生成します。

以下は、論理 NOT 演算子の使用法を示す簡単な例です。

#include
を使用して 名前空間 標準 ;

整数 主要 ( {
ブール 本当です = 真実 ;
ブール は偽です = 間違い ;

ブール 結果が真ではありません = 本当です ;
ブール 結果は偽ではありません = は偽です ;

コート << 「元の値:」 << 本当です << ', NOT の後: ' << 結果が真ではありません << 終わり ;
コート << 「元の値:」 << は偽です << ', NOT の後: ' << 結果は偽ではありません << 終わり ;

戻る 0 ;
}

この例では、「isTrue」と「isFalse」という 2 つのブール変数を宣言します。次に、論理 NOT 演算子を各変数に適用し、結果をそれぞれ「resultNotTrue」と「resultNotFalse」に保存します。その後、プログラムは元の値と両方の変数の論理 NOT 演算の結果を出力します。

このプログラムを実行すると、論理 NOT 演算子が「isTrue」(最初は true に設定されている) の真理値を反転し、false にしていることがわかります。同様に、「isFalse」の真理値(元は false)を反転し、true を生成します。

この出力は、論理 NOT 演算子によって達成される真理値の反転を明確に示しています。

例 4: ビット単位の NOT (~) 演算子

C++ のビット単位の NOT 演算子 (~) は、オペランドの各ビットのビット単位の否定を実行する単項演算子です。基本的なデータ型、特に整数などの整数型で機能します。結果は、オペランド内のすべての個々のビットを反転し、0 を 1 に、1 を 0 に変換することによって得られます。

その使用法を説明するために、次のコード スニペットを考えてみましょう。

#include
を使用して 名前空間 標準 ;

整数 主要 ( {
整数 オリジナルの値 = 5 ;

整数 結果ビットごとではありません = ~originalValue ;

コート << 「元の値:」 << オリジナルの値 << '、ビットごとの NOT の後: ' << 結果ビットごとではありません << 終わり ;

戻る 0 ;
}

この例では、「originalValue」整変数を値「5」で宣言します。次に、この変数に対してビット単位の NOT 演算子 (~) を使用します。この変数の結果は「resultBitwiseNot」に格納されます。次に、プログラムは、「cout」ステートメントを利用して、元の値とビット単位の NOT 演算後の結果を出力します。

このプログラムを実行すると、ビット単位の NOT 演算子が「originalValue」のバイナリ表現の各ビットを反転し、新しい値が得られることがわかります。

例 5: アドレス演算子と間接演算子

「&」記号で示されるアドレス演算子は、変数のメモリ位置を取得する目的で使用されます。変数へのポインタを返し、その値への間接的なアクセスを可能にします。間接演算子または逆参照演算子 (*) は、ポインタで指定されたメモリ位置に格納されている値を取得します。ポインタを介して間接的に実際のデータを操作する方法を提供します。

例を挙げて概念を理解してみましょう。

#include
を使用して 名前空間 標準 ;

整数 主要 ( {
整数 価値 = 99 ;

コート << 「元の値:」 << 価値 << 終わり ;

整数 * ptr = & 価値 ;
コート << 「メモリアドレス:」 << ptr << 終わり ;

整数 取得された値 = * ptr ;
コート << 「取得した値:」 << 取得された値 << 終わり ;

戻る 0 ;
}

このコードは、アドレス演算子と間接演算子の使用例を示しています。まず、「value」という名前の整数変数が値 99 で初期化されます。その後、「value」の元の値がコンソールに出力されます。続いて、ポインタ変数「ptr」が宣言され、アドレス演算子 (&) を使用して「value」のメモリ アドレスが「ptr」に割り当てられます。次に、プログラムはこのメモリ アドレスを出力し、「アドレス」演算子の基本操作を示します。

その後、新しい整変数「retrievedValue」が宣言され、間接演算子 (*) を使用して、「ptr」が指すメモリ アドレスに格納されている値が取得されます。取得した値はコンソールに出力されます。

結論

この記事では、C++ の単項演算子について包括的に説明しました。私たちは、単項演算子を算術演算子、論理演算子、ビット演算子、アドレスや間接演算子などのさまざまなタイプに分類することから始めました。これらの演算子の有用な応用例を示すために、現実世界の状況が例示されました。これらの演算子は C++ プログラミングにおいて重要な役割を果たし、開発者がポインターを効率的に操作し、メモリを管理できるようにします。