Игнорирование строки присваивания компилятором
#include <iostream>
int main() {
auto hax = 0;
// _ _
// | | | |
// | |__| | __ ___ __
// | |__| / _` \ \/ /
// | | | | (_| |> <
// |_| |_|\__,_/_/\_\
hax = 42;
std::cout << hax;
}
Почему программа печатает 0, а не 42?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Берем стандарт, и в 5.2.1.2 читаем:
Each instance of a backslash character (\) immediately followed by a new-line character is deleted, splicing physical source lines to form logical source lines.
Т.е.
Каждый экземпляр символа обратной косой черты (\), за которым сразу следует символ новой строки, удаляется, сращивая физические исходные строки для формирования логических исходных строк.
Все, ваша последняя строка
// |_| |_|\__,_/_/\_\
"сростается" с hax = 42;, превращая ее в комментарий.
Кстати, посмотрите на цвет этой строки в вопросе - он такой же, как и у комментария!