Поодходит ко мне програмист-американец и спрашивает:
- Сколько 6*9?
- 54, отвечаю я ем-42, утверждает он и показывает программу(а он
работает в C/C++)
#include <stdio.h>
#define SIX 1+5
#define NINE 8+1
int main(void)
{
int value = SIX * NINE; printf("Answer = %d\n", value); return 0;
}
- Данный код выводит строку «Answer = 42», потому что препроцессор языка
С++ трансформирует SIX * NINE в математическое выражение 1+5*8+1. Так
как при вычислениях сначала выполняется умножение, а затем сложение,
получается неправильный результат. Если в инструкциях #define
использовать скобки, ответ будет более ожидаемым, то есть 54, объяснил я
ему.
- А комп умнее, всё-таки, сказал он и как мы его не убеждали он всё
равно считает что 6*9=42.
Кажется Задорнов прав.