Форум OlegON > Разговоры на отвлеченные темы > Беседка

Главный вопрос Жизни, Вселенной и всего такого : Беседка

29.03.2024 17:38


03.02.2011 17:14
twix
 
Кто может сказать без гуглежа, что выведет приведенная программа на 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;
}
03.02.2011 17:33
grannie
 
Не знаю си, и гуглом не воспользовался, но предполагаю, что 42
03.02.2011 17:36
student
 
Цитата:
twix Кто может сказать без гуглежа, что выведет приведенная программа на 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;
}
в с++ - не знаю, а старый msc сделал бы по формуле 1+5*8+1 (если мне не изменяет память - 93 год все таки...)
03.02.2011 17:50
OlegON
 
Как я помню, в C define нечто вроде автозамены в тексте, в отличие от аналогичной структуры в Паскале и, например, Питоне. Т.е. перед компиляцией будет 1+5*8+1, которое дальше посчитается по правилам арифметики.
На С и С++ не пишу. Ждем правильный ответ.
03.02.2011 17:54
twix
 
Цитата:
OlegON На С и С++ не пишу. Ждем правильный ответ.
правильный ответ тобой и предложен.
03.02.2011 18:02
OlegON
 
:) не писать на С и С++ ?
На самом деле, мне этот язык нравится, шустрый и легкий, но, собака, с кроссплатформенностью не все так гладко, как в Java. Поэтому бросил еще на начальной стадии изучения и пары "hello world".
03.02.2011 19:44
twix
 
Цитата:
OlegON :) не писать на С и С++ ?
На самом деле, мне этот язык нравится, шустрый и легкий, но, собака, с кроссплатформенностью не все так гладко, как в Java. Поэтому бросил еще на начальной стадии изучения и пары "hello world".
ну, C и C++, имхо, отстали чутса от современного мира.
я тут тоже как-то пробовал вспомнить университетский цпп, а заодно и Qt выучить. должен сказать, что для меня, как для закоренелого дельфятника, это оказалось непосильной задачей.
зато на днях поставил Visual Studio Express с целью попробовать C#... это просто сказка! быстрая IDE с шикарным IntelliSense. делфи, даже из последних RAD Studio, такими скоростями похвастать не может. автокомплит для функций и циклов и форматирование кода работают просто изумительно. синтаксис, в отличие от C++, оказался простым до безобразия - нету этих ужасных стрелочек перед вызовом методов и свойств, нету геморроя с указателями - адаптироваться после делфи как раз плюнуть. и приложения, даже на том же Windows Forms работают в разы, если не десятки раз быстрее, чем на борландовском VCL.
так что, в общем, я свой выбор сделал. единственное, что огорчает - схожесть мультиплатформенного MonoDevelop с уже названным Qt. но там, видимо, Gtk оставляет свой отпечаток использованием сигналов и слотов вместо виндовых событий...

а развернутый ответ касается поведения #define в C++ - он действительно просто заменяет куски кода в тексте программы, а не вычисляет их значения.
Часовой пояс GMT +3, время: 17:38.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.