67 votes

Quelle est la signification de `???-` dans le code C++ ?

J'ai vu le code suivant dans certains codes anciens :

 size_t a = 1 ???- 2 :0;

Que signifie le symbole ???- en C++ ? Comment dois-je le comprendre ?

7 votes

??? ne doit être utilisé que dans les commentaires :)

1 votes

Il serait amusant d'inventer une fausse signification pour cet opérateur. ???- pourrait être l'opérateur "Vraiment ??? Je suis choqué !", un opérateur de ? qui indique au compilateur que la première branche est rare, par exemple.

12 votes

Mention obligatoire de l'opérateur WTF : ? ?!??!

109voto

Mysticial Points 180300

En fait, c'est le cas :

size_t a = 1 ? ~2 :0;

??- est un trigramme pour ~


Les trigraphes datent d'une époque ancienne... avant même que certains d'entre nous ne soient nés.

À l'époque, certains personnages n'étaient pas toujours pris en charge. Un programmeur non averti essayait de taper un tel caractère et se rendait compte qu'il n'existait pas sur le clavier !

enter image description here
Source de l'image : <a href="http://www.myoldmac.net/cgi-data/forum/phpBB2/viewtopic.php?t=305" rel="noreferrer">http://www.myoldmac.net/cgi-data/forum/phpBB2/viewtopic.php?t=305</a>

Les trigraphes ont donc été ajoutés pour permettre au programmeur d'accéder à la fonctionnalité de ces caractères lorsqu'ils n'existaient pas (soit dans l'encodage, soit au clavier).

Aujourd'hui, elles sont obsolètes et sont plus efficaces pour semer la confusion dans l'esprit du lecteur que pour contourner les anciennes normes.

Alors soit ce code est vraiment vieux, soit l'auteur était un imbécile.

0 votes

J'ai vu la notification apparaître 10 millisecondes avant de cliquer et je n'ai rien pu faire :p

0 votes

Merci de votre attention ! C'est quand même bizarre pour moi.

19 votes

Je vote pour (b), l'auteur était un imbécile. a = 1 ? ~2 : 0 est obscurci à la main pour a = ~2 . L'opérateur trinaire n'est là que pour une seule raison : Pour obscurcir le code. L'ajout du trigraphe pour obscurcir le tilde n'est qu'une cerise sur le gâteau.

16voto

??- est un trigraphe pour le tilde ~ la ligne est équivalente à :

size_t a = 1 ? ~2 :0;

9voto

CodeRider Points 357

??- est un trigraphe pour ~ caractère. Voici d'autres trigraphes :

 ??= for #

??/ for \

??' for ^

??! for |

L'utilisation des trigraphes est très rare aujourd'hui.

12 votes

"L'usage des trigraphes est très rare aujourd'hui. - pas dans le SO.

0 votes

Probablement aussi sur le site Programming Puzzles et Code Golf

7 votes

@Yawz Je pense qu'ils opteront pour ~ plus ??- ne serait-ce que pour le comptage des caractères.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X