2013-05-21 16 views
56

ho visto il seguente codice da alcuni codici legacy:significato di `??? - codice` in C++

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

Cosa significa il simbolo ???- significa in C++? Come dovrei capirlo?

Grazie!

+6

'???' deve essere utilizzato solo nei commenti. :) –

+1

Sarebbe divertente trovare un significato falso per questo operatore. '??? -' potrebbe essere il 'Davvero ??? Sono scioccata!' operatore, un '?' che suggerisce al compilatore che il primo ramo è raro da prendere, per esempio. – Patashu

+11

menzione operatore WTF obbligatorio: ??! ??! – chris

risposta

96

In realtà è:

size_t a = 1 ? ~2 :0; 

??- è un trigraph per ~


trigrammi sono da una vecchia era ... prima che alcuni di noi erano ancora nati.

Indietro nei giorni, c'erano alcuni caratteri che non erano sempre supportati. Un programmatore inconsapevole proverebbe a digitare un tale personaggio solo per scoprire che non esiste sulla tastiera!

enter image description here
Fonte immagine: http://www.myoldmac.net/cgi-data/forum/phpBB2/viewtopic.php?t=305

Quindi sono stati aggiunti trigrammi per consentire al programmatore di accedere alla funzionalità di questi personaggi, quando non esistevano (sia nella codifica o dalla tastiera).

Al giorno d'oggi, sono obsoleti e sono più efficaci nel confondere il lettore che nell'ottenere vecchi standard.

Quindi, quel codice è davvero vecchio, o l'autore era un idiota.

+0

Ho visto la notifica comparire come 10 millisecondi prima di fare clic e non potevo fare nulla al riguardo: p – chris

+0

Grazie! Questo è strano per me però. – taocp

+15

Io voto per (b), l'autore era un coglione. 'a = 1? ~ 2: 0' è una lunga mano offuscata per 'a = ~ 2'. L'operatore trinario è lì solo per una ragione: per offuscare il codice. Aggiungendo il trigrafo per offuscare la tilde, la gelatina si è appena raffreddata. –

14

??- è un trigraph per la tilde ~ carattere; la linea è equivalente a:

size_t a = 1 ? ~2 :0; 
6

??- è un trigraph per ~ carattere. Alcuni altri trigrammi sono:

??= for # 

??/ for \ 

??' for^

??! for | 

L'utilizzo di trigrammi sono molto rare oggi.

+9

* "L'uso dei trigraph è molto raro ora." * - non in SO. –

+0

Probabilmente anche su Programming Puzzles e sul sito Code Golf – 707

+6

@Yawz, penserei che vadano con '~' oltre '?? -' se solo per il conteggio dei caratteri. – TankorSmash

Problemi correlati