Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
Что печатает этот код?

Что печатает этот код?

11 Сен 2012

В одном из проектов нашёл забавный фрагмент кода, содержащий ошибку. На эту ошибку обратил внимание анализатор PVS-Studio. Но я вначале ему не поверил. Мне показалось, что анализатор ошибся и уже подумал о том, чтобы запустить отладчик. Присмотрелся чуть внимательнее. А нет, действительно ошибка!

Я немного изменил код и, используя ICQ, отослал пример четырём знакомым программистам. И попросил написать, что напечатает код приведённый ниже. Все четверо дали вначале неправильные ответы.

Предлагаю попробовать, сможете ли вы дать правильный ответ. Что печатает на экране этот код?

cout << (sizeof(char *) == 8) ? "64-bit" : "32-bit";

Длинным вступлением я, конечно, насторожил читателя. И скорее всего вы нашли правильный ответ.

Этот код распечатает единицу или ноль. Вначале вычисляется выражение в скобках. В зависимости от режима компиляции, вы получите true или false. Следующая операция, которая выполнится, это вызов перегруженного оператора <<. В результате, на экране появится число 0 или 1.

Далее, объект типа ostream будет неявно приведён к типу bool. И наконец, выполнится оператор тернарный оператор '? :'. Но это действие ничего не делает.

Популярные статьи по теме

Подпишитесь на новые комментарии к этой статье.

Подписаться

Комментарии (0)

close comment form