Domanda

Avevo trovato un uscita strano quando scrivo le seguenti linee in modo molto semplice:

Codice:

 printf("LOL??!\n");
 printf("LOL!!?\n");

Output: alt text

Accade anche il codice viene compilato sotto entrambi MBCS e UNICODE.

L'uscita varia sulla sequenza di "?" e "!" ...

Qualche idea?

È stato utile?

Soluzione

Si può provare

printf( "What?\?!\n" );

programmazione In informatica, digrammi e trigrammi sono sequenze di due o tre caratteri rispettivamente che sono interpretati come un carattere dal linguaggio di programmazione.

Alcuni compilatori supportano un'opzione per attivare il riconoscimento di trigraphs fuori, o trigrammi disabilitare di default e richiedono la possibilità di accenderli. Alcuni possono emettere avvisi quando incontrano trigrammi nei file di origine. Borland fornito un programma separato, il preprocessore trigraph, deve essere utilizzato solo quando l'elaborazione trigraph è desiderato.

Altri suggerimenti

??! è un href="http://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C" rel="nofollow"> trigraph che viene sostituito da |.

Come regola generale, non si dovrebbe mai mettere due caratteri punto interrogativo insieme ovunque in un file di origine.

Si chiamano Trigraph sequenze

??! è la sequenza trigraph per barra verticale |.

Il preprocessore C / C ++ riconosce i trigrammi e li sostituisce con il loro carattere equivalente.
Così quando il codice viene visto dal compilatore, i trigrammi sono già sostituito.

# grepping in the source file:
$ grep printf a.c      
  printf("foo: ??!");

# grepping the preprocessor output:
$ gcc a.c -trigraphs -E | grep printf | grep foo
  printf("foo: |");

Il ??! è noto come trigraph e viene sostituito con | in uscita. Controllare questo

Si tratta di una speciale sequenza di caratteri di una stringa costante che ha un significato speciale. Chiamato un trigraph che è stato inizialmente attuato perché non tutti i terminali supportati alcuni caratteri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top