C++の単項演算子とは?種類・使い方を実例付きで解説
単項演算子(unary operator)とは、1つのオペランド(被演算子)に対して作用し、新しい値を生成する演算子のことです。C++には以下のような単項演算子が用意されています。
C++の主な単項演算子一覧
| 演算子 | 説明 |
|---|---|
| 間接参照演算子(*) | ポインタ変数に作用し、そのポインタが指すアドレスにある値に相当するlvalueを返します。この操作はポインタの「デリファレンス(間接参照)」と呼ばれます。 |
| アドレス取得演算子(&) | オペランドのメモリアドレスを取得する単項演算子です。オペランドとしては、関数指定子、またはビットフィールドでなく、register記憶クラス指定子を付けずに宣言されたオブジェクトを指すlvalueを指定できます。 |
| 単項プラス演算子(+) | 結果としてオペランドそのものの値を返します。オペランドは算術型である必要があります。 |
| 単項マイナス演算子(-) | オペランドの値の符号を反転させます。オペランドには任意の算術型を指定できます。ただし、結果はlvalueではありません。 |
| 論理否定演算子(!) | オペランドの意味(真偽値)を反転させます。オペランドは算術型またはポインタ型(あるいはそれらに評価される式)である必要があり、暗黙的にbool型へ変換されます。 |
| 1の補数演算子(~) | 「ビットごとの補数」や「ビット否定(bitwise NOT)」とも呼ばれ、オペランドのビットごとの1の補数を生成します。オペランドは整数型である必要があります。 |
| 前置インクリメント演算子(++) | オペランドに1を加え、その増加後の値が式の結果となります。オペランドはconst型ではないlvalueである必要があります。結果はオペランドと同じ型のlvalueです。 |
| 前置デクリメント演算子(--) | オペランドから1を減じ、その減少後の値が式の結果となります。オペランドはconst型ではないlvalueである必要があります。結果はオペランドと同じ型のlvalueです。 |
| キャスト演算子() | 特定の場面でオブジェクトの型を明示的に変換するための手段を提供します。型キャストが行われた後、コンパイラはキャスト式をtype-nameで指定した型として扱います。 |
| sizeof演算子 | コンパイル時に評価される単項演算子で、オペランドのサイズ(バイト数)を計算するために使用できます。 |
| new演算子 | 動的にメモリを確保(割り当て)するためのメモリ確保演算子です。 |
| delete演算子 | newによって動的に確保されたメモリを解放(割り当て解除)するためのメモリ解放演算子です。 |
これらの単項演算子は右から左への結合規則を持ちます。また、単項式は一般に、後置式や基本式の前に置かれる構文を含みます。
使用例
ここでは、単項マイナス演算子(-)とキャスト演算子()を使ったサンプルコードを見てみましょう。
#include<iostream>
using namespace std;
int main() {
int x;
float y = 1.23;
x = (int) y; // floatからintへ明示的な型変換(キャスト)
x = -x; // 符号を反転
cout << x;
return 0;
}
このコードでは、まずfloat型の変数y(値は1.23)を(int)によるキャストでint型に変換し、xに代入しています。キャストにより小数点以下が切り捨てられ、xには1が格納されます。次に単項マイナス演算子-によって符号が反転されます。
実行結果
実行すると、以下の出力が得られます。
-1
-
C++の単項演算子とは?種類・使い方を実例付きで解説
単項演算子(unary operator)とは、1つのオペランド(被演算子)に対して作用し、新しい値を生成する演算子のことです。C++には以下のような単項演算子が用意されています。 C++の主な単項演算子一覧 演算子説明 間接参照演算子(*)ポインタ変数に作用し、そのポインタが指すアドレスにある値に相当するlvalueを返します。この操作はポインタの「デリファレンス(間接参照)」と呼ばれます。 アドレス取得演算子(&)オペランドのメモリアドレスを取得する単項演算子です。オペランドとしては、関数指定子、またはビットフィールドでなく、register記憶クラス指定子を付けずに宣言さ
-
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