compl, ~

De RAD Studio
Aller à : navigation, rechercher

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