Запускаем у себя следующий код:
#include <iostream>
using namespace std;
int main() {
cout << "??-" << endl;
return 0;
}
Фишка появляется в Visual C++ 2005, 2008. Кто знает почему так?
UPD: круто, что можно спросить тут что-нибудь, и ответ придет почти сразу :) Всем спасибо
~, vc2008, win7
http://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C
о, спасибо
Я, честно говоря, не знал о такой фишке. И во время контеста это очень неожиданно :)
Не имею под рукой VS, но в чем неожиданность?
gcc выводит ??-
gcc с опцией -trigraphs выводит ~
Почему так происходит.
интересно, а зачем включать эту опцию в Visual Studio по умолчанию? причем, в 2010 она выключена, значит...
неприятный эффект на соревновании, а вдруг тесты содержат такие последовательности?
Тесты тут не причём, эта последовательность заменяется препроцессором.
Эта фича обеспечила мне час увлекательного дебага при решении этой задачи: Архиватор (Тимус)
Локализовав багу до злополучного "??-", был шокирован и думал что это бага компилятора)
VS не выдаёт никаких предупреждений о таких последовательностях? Неприятно.
Он не только не выдает предупреждений, так еще по умолчанию обрабатывает их =)
Как говорится, happy debug!
Пора бы уж запомнить, что Mod и Div там с int64 жутко тормозные. Из-за этого этого потерять задачу E — ну очень обидно...