22.10.2011, 20:43 | #1 (ссылка) |
Новичок
Регистрация: 22.10.2011
Сообщений: 144
Репутация: 9
|
6*9=42
Всем привет.Вот собственно сам код:
#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" Обьясните пожалуйста мне что я сделал не так |
25.11.2011, 13:22 | #3 (ссылка) |
Новичок
Регистрация: 25.11.2011
Сообщений: 1
Репутация: 1
|
Мимо проходила) Конечно, магия, ведь 42 - это ответ на главный вопрос жизни, вселенной и всего такого =)
при использовании констант компилятор просто подменяет их на выражение, им соответствующее, то есть при #define SIX 1+5 #define NINE 8+1 int value = SIX * NINE; выполняется int value = 1+5 * 8+1, т.е. 1+40+1=42. Чтобы получился правильный результат, надо взять 1+5 и 8+1 в скобочки помню, подобная задачка в каком-то классическом учебнике по С приводилась. |
Ads | |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|