compl、~

提供: RAD Studio
移動先: 案内検索

キーワード(アルファベット順):インデックス への移動


カテゴリ

トークンの代替表現演算子

構文

説明

compl 演算子は、~ 演算子(ビット NOT)の代替表現です。

compl という単語は、complement(補数)の省略形です。

~ のオペランドは、整数または列挙型でなければなりません。 結果は、オペランドの 1 の補数です。 汎整数拡張が行われます。

論理値を反転するには、論理否定(演算子 !)を使用してください。 

結果の型は、拡張されたオペランドの型になります。

~X() という単項式(X はクラス名)は、一意に決まらない場合があります。 このあいまい性を解決するために、~X をデストラクタとして扱うよりも、~ を単項補数演算子として扱う方が優先されます。

~ の代わりに compl を使用するには、[新しい演算子名を有効にする]オプション(-VM コンパイラ スイッチ。[<プロジェクト> のプロジェクト オプション]ダイアログ ボックスの[互換性]ページで設定可能)を設定する必要があります。

次のコードは、C++ コンソール アプリケーションのものです。 出力される値はすべて 16 進法です。

#include <tchar.h>
#include <iostream>
#include <iomanip>
using namespace std;

int _tmain(int argc, _TCHAR* argv[]) {
	cout << hex << setfill('0'); // 16 進数形式で表示

 // それの 1 の補数は 0 ではない
	cout << setw(8) << ~((unsigned long)1) << endl;

 // 代わりの表現を使用
	cout << setw(8) << compl((unsigned long)0xff) << endl;

 // 符号値の符号ビットは戻された
	cout << setw(8) << ~((signed long) - 1) << endl;

	return 0; // ここにブレークポイントを置いてコンソールの出力を確認
}

コンソール出力

fffffffe
ffffff00
00000000