Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему используют в С++ printf, void main() и т.д. Совсем меня запутали... 
V
    Опции темы
Xenon
Дата 8.6.2006, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Насчет stdafx.h - это я его ненароком сунул. А конструкция
Код

int main(int argc, char* argv[])
{
  return 0;
}

имхо, считается, хорошим стилем smile Я понимаю, что это не нежно, если в прогу не передаются параметры при запуске, но ... По-мойму это из серии: "А что лучше int main, или void main"   

Это сообщение отредактировал(а) XenonSk - 8.6.2006, 23:59


--------------------
user posted image  
PM MAIL   Вверх
LPBOY
Дата 8.6.2006, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Цитата(bel_nikita @  8.6.2006,  23:33 Найти цитируемый пост)
ИМХО, хорошим стилем считается конструкция:

+1 Правда, параметры и return 0 можно опускать:

Код

int main()
{

}
 
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
Xenon
Дата 8.6.2006, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



LPBOY А зачем тогда писать int main, если ты ничего не ретурнишь? 


--------------------
user posted image  
PM MAIL   Вверх
LPBOY
Дата 9.6.2006, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



В этом случае автоматически ретурнится 0, если выполнилась последняя инструкция функции main. smile А int main, потому что иначе какие-нибудь comeau или gcc обматерят. smile 
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
DaJunior
Дата 9.6.2006, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 8.6.2006
Где: за компьютерным с толом

Репутация: -1
Всего: нет



сообщение 8.6.2006, 23:57

Это с каких это пор такая конструкция считается хорошим стилем?!?!?!?
M
sergej.z
вырезал


Вообще int main() означает, что программа после выполнения вернет значение типа int, и все... если так пишешь, то в конце гл. ф-ии соизволь написать return 0; 

Если ты пишешь void main(void), то это значит, что ф-ия не возвращает значений, и не принимает их в качестве параметров.

А вообще мое мнение - если твоя прога ничего не возвращает, то и напиши ты void перед main'ом, потом самому понятней будет.

///////////////////////////////////////////////////////////////////////////////////////////////////

И вообще, если уж пошла речь о правильном стиле программирования, то лучше почитайте книгу "Правила программирования на Си и СИ++(Ален И.Голуб)" - рекомендую всем!

А чтобы не возникало 
M
sergej.z
вырезал
вопросов у новичков - "Как программировать на С++(Харви Дейтел, Пол Дейтел)" - все разжевано, ребенок поймет. Кстати книга сама по себе оч. интересна даже тем, кто давно программирует, лично меня она оч. порадовала, когда нашел ее в рунете...  
PM MAIL   Вверх
Кнером
Дата 9.6.2006, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тОрмоз
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 19



DaJunior, об этом и более точно уже написал LPBOY.

  
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 9.6.2006, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Это с каких это пор такая конструкция считается хорошим стилем?!?!?!? БРЕД! 

далеко не бред
например в юниксах (быть может не только в них) по завершении программы оболочка записывает в специальную переменную код завершения. Нормальным кодом завершения считается 0, и многие скрипты его проверяют. В случае если main не возвращает ничего, то код завершения - в общем случае произвольный, случайный. Оттого даже правильно отработавшая программа с внешней точки зрения может оказаться неправильно отработавшей  

Это сообщение отредактировал(а) MAKCim - 9.6.2006, 09:43


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Xenon
Дата 9.6.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



DaJunior, Ну тогда давай вообще все правила хорошего тона будем считать бредом и будем писать код кое-как, что только самому разработчику понятно.
Есть же, блин, кананоы определенные. 


--------------------
user posted image  
PM MAIL   Вверх
Кнером
Дата 10.6.2006, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тОрмоз
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 19



Цитата(XenonSk @  9.6.2006,  09:16 Найти цитируемый пост)
правила хорошего тона

Чтобы было легче жить. Если так можно сказать. Жизнь и так сложна.
Нужно упрощать, а не усложнять.

XenonSk, это как дополнение.  smile 
 
PM MAIL WWW ICQ   Вверх
harper
Дата 12.6.2006, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 29.5.2006

Репутация: нет
Всего: нет



кстати, а почему <<  оператор вывода? это же оператор сдвига применительно к объектам класса потоков перегруженный так что осуществляет вывод. или нет? 
PM MAIL   Вверх
MAKCim
Дата 12.6.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

кстати, а почему <<  оператор вывода? это же оператор сдвига применительно к объектам класса потоков перегруженный так что осуществляет вывод. или нет? 

Цитата

... Но почему именно <<?. Новый лексический знак придумать невозможно. ... Я пробовал < и >, но их смысл так крепко врос в людские умы, что новые выражения, обозначающие ввод/вывод, для всех практических применений оказались просто нечитабельны.
Операторы << и >> используются для встроенных типов не так часто, чтобы вызвать проблему. Они симметричны в том смысле, что могут использоваться для обозначения "в" и "из". Приоритет операции << не очень высок и позволяет вставлять арифметические выражения в операнды без скобок.

Страуструп (ЯП C++)
 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Oleg_Ci
Дата 12.6.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 3
Всего: 30



Цитата
Дополнительно хочу спросить, что является в действительности
оператором вывода в С++.
1. cout
2. cout <<
3. <<
'cout'  и  'cout<<' - это вобще-то не операторы.
Перегруженный оператор '<<' называется оператором вставки, в том облике как его представляет класс ostream.
Класс ostream включает функцию 'operator<<()', а 'cout' является объектом класса ostream, соответственно оператор '<<' (функция-элемент) может вызываться обьектом 'cout' ( cout << ). Или по другому - ofstream включает ещё методы 'put()', 'write()', соответственно можно написать cout.put('A'); cout.write("aaa",3);  ,т.е. 'cout' - это объект класса,  '<<' - это метод класса, а 'cout<<' - а эта конструкция, вроде называется - вызов функции.
Функция-член 'operator<<' принимает 2 аргумента , 1-ссылка на класс ostream (cout<<"aa"  - левый операнд), 2-что напечатать надо (cout<<"aa"  - правый операнд),  поэтому когда пишем 'cout<<"aa"'  мы на самом деле вызываем функцию 'operator<<'. Ещё можно написать вот так:  operator<<(cout,"aaa").
Код

int main(int argc, char* argv[])
{
   std::cout<<"ddd";
   std::cout.write("  aaa",5);
   std::operator<<(std::cout," bbb");
   std::cin.get();
   return 0;
}
 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.