Как стать автором
Обновить

Задачка "Hello World"

Время на прочтение1 мин
Количество просмотров6.7K
Итак, вопрос знатокам: Сколько раз на экране появится заветная фраза при выполнении этой программы?

#include <iostream>
int main(int argc, char* argv[])
{
   int i = 10;
   std::cout<<"Hello World!"<<std::endl;
   // Сколько раз???
   while(i--)
   {
      // Сколько раз будет вызвана эта строка???/
      for(int j=0; j<10; j++)
         std::cout<<"Hello World!"<<std::endl;
   }
   return 0;
}

Решение


Обратите внимание на комментарии. Дело в том, что символ ??/ — это, так называемый, триграф.

Ниже перечислены основные триграфы:


Триграф (Эквивалентный символ)
??=      #
??/      \
??'      ^
??(      [
??)      ]
??!      |
??<      {
??>      }
??-      ~

Триграфы использовались во времена языка Си когда не на всех клавиатурах были заменяемые символы. Что интересно — данная особенность по-прежнему позволяет «пудрить мозги» даже в Visual Studio 2008, хотя необходимость в использовании триграфов давно отпала. Хотя стоит отдать должное компилятор от Microsoft выдает соответствующее предупреждение. GCC, в данном случае, оказался более «современным» и триграфы просто игнорирует.

Таким образом следующая за триграфом ??/ строка будет добавлена к комментарию (действие "\" обратного слеша)

Ответ


Ответ будет разным в зависимости от компилятора и его настроек: 101 либо 11, если триграфы учитываются.
Теги:
Хабы:
+73
Комментарии183

Публикации

Изменить настройки темы

Истории

Работа

QT разработчик
6 вакансий
Программист C++
123 вакансии

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн