compl, ~
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