Предупреждение: у нас есть цензура и предварительный отбор публикуемых материалов. Анекдоты здесь бывают... какие угодно. Если вам это не нравится, пожалуйста, покиньте сайт. 18+

История №516391

Поодходит ко мне програмист-американец и спрашивает:
- Сколько 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.
Кажется Задорнов прав.
+-10
Проголосовало за – 25, против – 35
Статистика голосований по странам
Статистика голосований пользователей
Чтобы оставить комментарии, необходимо авторизоваться. За оскорбления и спам - бан.
5 комментариев, показывать
сначала новые

Карамах 23.06.11 01:08

Who I,попробуйте сами и тогда мы с вами обсудим работу данной программы.

+0
ответить

Who I23.06.11 01:05

наверно не спец но такая передача в подключаемые функции не катит нет разделения и если даже работает :) компилятор должен посчитать

+0
ответить

Хома Брут20.06.11 22:12

"А комп умнее, всё-таки"- сказал он- "и как мы его не убеждали, он всё равно считает что 6*9=42"
- гы, хотел бы я посмотреть, как они комп убеждали!:)))

+0
ответить

Карамах 20.06.11 21:06

Спасибо,учту,попробую.

+0
ответить

извесный критег20.06.11 16:49

как правило,есле дать человеку песды,то доходить начинает быстрее. Рекомендую.

+0
ответить

Общий рейтинг комментаторов
Рейтинг стоп-листов

Рейтинг@Mail.ru