Распечатать ?? а также !! В другой последовательности покажет разный выход
Вопрос
Я нашел странный вывод, когда я пишу следующие строки очень простым способом:
Код:
printf("LOL??!\n");
printf("LOL!!?\n");
Выход:
Это происходит даже код скомпилирован под 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 и заменяется на | на выходе. Проверь это связь
Это специальная последовательность символов в строковой константе, которая имеет особое значение. Называется триграфом, они изначально были реализованы, потому что не все терминалы поддержали некоторые персонажи.