compl, ~
Remonter à Liste alphabétique des mots clés - Index
Catégorie
Représentations alternatives de tokens, Opérateurs
Syntaxe
Description
L'opérateur compl est une représentation alternative de l'opérateur ~ (NOT bit-à-bit).
Le mot compl est l'abréviation de complement.
L'opérande de ~ doit être un type intégral ou un type énumération. Le résultat est le complément à un de l'opérande. Des conversions intégrales sont effectuées.
Pour inverser des valeurs booléennes, vous devez utiliser la négation logique (operator !).
Le type du résultat est le type de l'opérande promu.
Il peut y avoir une ambiguïté dans l'expression unaire ~X(), où X est un nom de classe. L'ambiguïté est résolue en faveur du traitement de ~ comme un complément unaire plutôt que le traitement de ~X comme un destructeur.
Afin d'utiliser l'alternative compl pour ~, vous devez définir l'option Activer les nouveaux noms d'opérateurs (le commutateur -VM
du compilateur, disponible sur la page Compatibilité de la boîte de dialogue Options de projet).
Exemple
Le code suivant représente une application console C++. Toutes les valeurs imprimées sont en base 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
}
Sortie console
fffffffe ffffff00 00000000