Drucken ?? und !! in unterschiedlicher Sequenz unterschiedliche Ausgänge zeigen

StackOverflow https://stackoverflow.com/questions/3862625

  •  27-09-2019
  •  | 
  •  

Frage

hatte ich einen seltsamen Ausgang gefunden, wenn ich die folgenden Zeilen auf sehr einfache Art und Weise schreiben:

Code:

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

Ausgabe: alt text

Es kommt sogar der Code unter beiden MBCS und UNICODE zusammengestellt.

Der Ausgang hängt von der Sequenz von „?“ und "!" ...

Jede Idee?

War es hilfreich?

Lösung

Sie können versuchen,

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

In der Computerprogrammierung, Digraphen und trigraphs sind Sequenzen von zwei oder drei Zeichen jeweils die als ein Zeichen von der Programmiersprache interpretiert werden.

Einige Compiler unterstützen eine Option Erkennung von trigraphs auszuschalten, oder deaktivieren trigraphs standardmäßig aktiviert und erfordern eine Option, um sie einzuschalten. Einige können Warnungen ausgeben, wenn sie trigraphs in Quelldateien begegnen. Borland lieferte ein separates Programm, das trigraph Vorprozessor, verwendet werden, nur wenn trigraph Verarbeitung gewünscht wird.

Andere Tipps

??! ist ein trigraph , die durch | ersetzt wird.

In der Regel sollten Sie nie zusammen zwei Fragezeichen Zeichen setzen überall in einer Quelldatei.

Sie heißen Trigraph Sequences

??! ist die trigraph Sequenz für Vertical Bar |.

Der C / C ++ Präprozessor erkennt die trigraphs und ersetzt sie mit ihrem äquivalent Charakter.
Also von der Zeit des Code durch den Compiler zu sehen ist, werden die trigraphs bereits ersetzt.

# 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: |");

Die ??! als trigraph bekannt und wird ersetzt mit | in der Ausgabe. Sehen Sie sich diese Link

Es ist eine spezielle Folge von Zeichen in einem String-Konstante, die eine besondere Bedeutung hat. Genannt ein trigraph sie wurden ursprünglich eingeführt, weil nicht alle Terminals einige Zeichen unterstützt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top