C/C++の単項演算子とは?種類と使い方をわかりやすく解説
C/C++における単項演算子(unary operator)は、1つのオペランドに対して作用し、新しい値を生成する演算子です。本記事では、C/C++で利用できる主な単項演算子の種類と、それぞれの動作について詳しく解説します。
C/C++の主な単項演算子一覧
| 演算子 | 説明 |
|---|---|
| 間接参照演算子(*) | ポインタ変数に作用し、ポインタが指すアドレスにある値と等価な左辺値(l-value)を返します。この操作は「ポインタのデリファレンス(dereferencing)」と呼ばれます。 |
| アドレス演算子(&) | オペランドのアドレスを取得する単項演算子です。オペランドには、関数指定子、またはビットフィールドではなくregister記憶クラス指定子でも宣言されていないオブジェクトを指す左辺値を指定できます。 |
| 単項プラス演算子(+) | オペランドの値をそのまま結果として返します。オペランドは算術型である必要があります。 |
| 単項マイナス演算子(-) | オペランドの値の符号を反転(負の値に)します。オペランドは任意の算術型を取れますが、結果は左辺値にはなりません。 |
| 論理否定演算子(!) | オペランドの意味を反転させます。オペランドは算術型またはポインタ型(あるいはそれらに評価される式)である必要があり、暗黙的にbool型へ変換されます。 |
| 1の補数演算子(~) | 「ビットごとの補数」や「ビット否定(bitwise NOT)」とも呼ばれ、オペランドのビットを反転した1の補数を生成します。オペランドは整数型である必要があります。 |
| 前置インクリメント演算子(++) | オペランドに1を加算し、その加算後の値が式の結果となります。オペランドはconst型でない左辺値である必要があり、結果はオペランドと同じ型の左辺値になります。 |
| 前置デクリメント演算子(--) | オペランドから1を減算し、その減算後の値が式の結果となります。オペランドはconst型でない左辺値である必要があり、結果はオペランドと同じ型の左辺値になります。 |
| キャスト演算子() | 特定の状況において、オブジェクトの型を明示的に変換する手段を提供します。型変換(キャスト)が行われると、コンパイラはキャスト式を指定された型名として扱います。 |
| sizeof演算子 | コンパイル時に評価される単項演算子で、オペランドのサイズ(バイト数)を計算するために使用できます。 |
| new演算子 | メモリを動的に確保するためのメモリ割り当て演算子です。 |
| delete演算子 | new演算子によって動的に確保されたメモリを解放するための演算子です。 |
これらの単項演算子は右から左への結合規則(right-to-left associativity)を持ちます。また、単項式は一般に、後置式や基本式の前に記述される構文を含みます。
次に、単項マイナス演算子(-)とキャスト演算子()を使用した具体例を見てみましょう。
サンプルコード
#include<iostream>
using namespace std;
int main() {
int x;
float y = 1.23;
x = (int) y; // float型からint型へキャスト
x = -x; // 符号を反転
cout << x;
return 0;
}
実行結果
-1
この例では、まずfloat型の変数y(1.23)をキャスト演算子を使ってint型に変換し、xに1が代入されます。その後、単項マイナス演算子によって符号が反転され、最終的に-1が出力されます。このように、単項演算子を組み合わせることで、簡潔に値の変換や操作を行うことができます。
-
C++の論理演算子(||・&&・!)の基本と使い方を徹底解説
論理演算子の概念はとてもシンプルです。プログラムが複数の条件に基づいて判断を下せるようにするための仕組みです。各オペランドは「true または false に評価できる条件」として扱われ、その評価結果をもとに、「op1 演算子 op2」や「!op1」といった式全体の値が決まります。C++には主に3種類の論理演算子があり、それぞれ以下のような特徴を持っています。論理OR演算子(||)論理OR演算子(||)は、オペランドのどちらか一方、あるいは両方が true であればブール値 true を返し、それ以外の場合は false を返します。オペランドは評価前に暗黙的に bool 型へ変換され、結果も
-
C++の算術演算子入門!基本の5つの演算子と複合代入演算子の使い方
C++の基本的な算術演算子 C++には、数値計算のために用意された基本的な算術演算子が5つあります。それぞれ以下の通りです。 加算(+) 減算(-) 乗算(*) 除算(/) 剰余(%) 使用例 これらの演算子は、C++のあらゆる算術演算に使用できます。実際にどのように動作するのか、以下のサンプルコードで確認してみましょう。 #include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c; c = a + b; cout <&l