Вернуться   Компьютерный форум > Компьютеры > Программы > Программирование
 
 
Опции темы
Старый 22.10.2011, 20:43   #1 (ссылка)
Новичок
 
Регистрация: 22.10.2011
Сообщений: 144
Репутация: 9
Talking 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"
Обьясните пожалуйста мне что я сделал не так
Flyns вне форума  
Старый 24.11.2011, 18:56   #2 (ссылка)
Новичок
 
Регистрация: 21.07.2011
Сообщений: 42
Репутация: 1
По умолчанию

Прверте в своей программе, может там 8-1?
А так магия
webforum вне форума  
Старый 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 в скобочки
помню, подобная задачка в каком-то классическом учебнике по С приводилась.
hiiri вне форума  
Ads
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 05:24. Часовой пояс GMT +4. Powered by vBulletin® Version 5.8.9
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.