Поодходит ко мне програмист-американец и спрашивает:
- Сколько 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.
Кажется Задорнов прав.
История №516391
+-10–
Проголосовало за – 25, против – 35
Статистика голосований по странам
Статистика голосований пользователей
Чтобы оставить комментарии, необходимо авторизоваться. За оскорбления и спам - бан.
5 комментариев, показывать
сначала новые
сначала новыесначала старыесначала лучшиеновые - список
Who I,попробуйте сами и тогда мы с вами обсудим работу данной программы.
+0–
ответить
Who I• 23.06.11 01:05
наверно не спец но такая передача в подключаемые функции не катит нет разделения и если даже работает :) компилятор должен посчитать
+0–
ответить
"А комп умнее, всё-таки"- сказал он- "и как мы его не убеждали, он всё равно считает что 6*9=42"
- гы, хотел бы я посмотреть, как они комп убеждали!:)))
+0–
ответить
извесный критег• 20.06.11 16:49
как правило,есле дать человеку песды,то доходить начинает быстрее. Рекомендую.
+0–
ответить