compl, ~

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Schlüsselwörter alphabetisch - Index


Kategorie

Alternative Repräsentationen von Token, Operatoren

Syntax

Beschreibung

Der Operator compl ist eine alternative Repräsentation des Operators ~ (bitweises NICHT).

Der Operator compl ist eine Kurzform für complement (Komplement).

Der Operand von ~ muss ein integraler oder ein Aufzählungstyp sein. Das Ergebnis ist das Komplement eines Operanden. Es werden integrale Umwandlungen ausgeführt.

Um boolesche Werte zu invertieren, müssen Sie die logische Negation (Operator !) verwenden.

Der Typ des Ergebnisses ist der Typ des umgewandelten Operanden.

Der unäre Ausdruck ~X() kann zu Mehrdeutigkeiten führen, wenn X ein Klassenname ist. Die Mehrdeutigkeit wird zugunsten der Behandlung von ~ als unäres Komplement anstatt der Behandlung von ~X als Destruktor aufgelöst.

Für die Verwendung des Operators compl als Alternative für ~ müssen Sie die Option Neue Operatorennamen aktivieren (die Compiler-Option -VM auf der Seite Kompatibilität des Dialogfeldes Projekt > Optionen) aktivieren.

Beispiel

Der folgende Code stellt eine C++-Konsolenanwendung dar. Alle ausgegebenen Werte haben die Basis 16.

 #include <tchar.h>
 #include <iostream>
 #include <iomanip>
 using namespace std;
 
 int _tmain(int argc, _TCHAR* argv[]) {
 	cout << hex << setfill('0'); // display in hexadecimal format
 
 	// the one's complement of 1 is not 0
 	cout << setw(8) << ~((unsigned long)1) << endl;
 
 	// use the alternative representation
 	cout << setw(8) << compl((unsigned long)0xff) << endl;
 
 	// the sign bit of a signed value is also inverted
 	cout << setw(8) << ~((signed long) - 1) << endl;
 
 	return 0; // put breakpoint here to see the console output
 }

Konsolenausgabe

fffffffe
ffffff00
00000000