Распечатать ?? а также !! В другой последовательности покажет разный выход

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

  •  27-09-2019
  •  | 
  •  

Вопрос

Я нашел странный вывод, когда я пишу следующие строки очень простым способом:

Код:

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

Выход:alt text

Это происходит даже код скомпилирован под MBC, так и Unicode.

Вывод варьируется в зависимости от последовательности «?» а также "!"...

Есть идеи?

Это было полезно?

Решение

Вы можете попробовать

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

В компьютерных программировании Digraphs и Trigraphs являются последовательностями двух и трех символов соответственно, которые интерпретируются как один символ языком программирования.

Некоторые компиляторы поддерживают опцию, чтобы повернуть распознавание Trigraphs Off или отключить триграфы по умолчанию и потребуется возможность включить их. Некоторые могут выдавать предупреждения, когда они сталкиваются с Trigraphs в исходных файлах. Borland поставил отдельную программу, препроцессор Trigraph, который будет использоваться только при желании Trigraph.

Другие советы

??! это Trigraph который заменяется на |.

Как правило, вы никогда не должны размещать два вопросительных символа в любом месте в исходном файле.

Они называются Последовательности Trigraph

??! Это последовательность Trigraph для вертикальной панели |.

Препроцессор C / C ++ распознает триграфы и заменяет их своим эквивалентным характером.
Поэтому к тому времени, когда ваш код виден компилятором, триграфы уже заменены.

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

??! известен как Trigraph и заменяется на | на выходе. Проверь это связь

Это специальная последовательность символов в строковой константе, которая имеет особое значение. Называется триграфом, они изначально были реализованы, потому что не все терминалы поддержали некоторые персонажи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top