Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите в изучении C.

Ответить
Настройки темы
C/C++ - Помогите в изучении C.

Аватара для Efimalex

Пользователь


Сообщения: 76
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 04-02-2014
Добрый вечер. Решил я попытаться освоить программирование, решил начать с C. До этого с программированием дела не имел ( школьный курс Basic не в счет ). Читаю книгу Д. Ритчи & Керниган Б. Язык программирования С., поставил Eclipse, компиляторы MinGW. Начал писать, а вернее списывать, свою первую программу. Текст программы взят из книги.
Код: Выделить весь код
#include <stdio.h>
main()
{
    printf("Hello, world\n");
}
eclipse после компиляции выдавал две ошибки, хотя и запускал программу. Они пропали после того как текст изменил на
Код: Выделить весь код
#include <stdio.h>
int main()
{
    printf("Hello, world\n");
    return 0;
}
Этот текст я взял в инете. Объясните в чем разница? Что такое int я разобрался, но зачем в данной программе нужно указывать тип функции? И про return 0

Отправлено: 23:16, 03-02-2014

 

Пользователь


Сообщения: 121
Благодарности: 35

Профиль | Отправить PM | Цитировать


Цитата Efimalex:
eclipse после компиляции выдавал две ошибки, хотя и запускал программу. »
Не ошибки, а предупреждения (warning). Это просто указание на места в коде, которые хоть и являются синтаксически допустимыми, но кажутся компилятору странными или не соответствуют стандарту. Их можно не исправлять, если вы уверены, что они не приведут к ошибкам.
Скорее всего у вас используется компилятор C++, а не C. В стандарте С++ есть требование, что функция main должна возвращать целочисленный код завершения. return 0, в данном случае означает, что программа при успешном завершении передает операционной системе код завершения 0. Обычно код завершения 0 означает успешное завершение программы, другими значениями обозначают аварийное завершение.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:57, 04-02-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Efimalex:
Объясните в чем разница? »
В настройках компилятора?
Код: Выделить весь код
#include <stdio.h>
main()
{
printf("Hello, world\n");
}
У меня в среде Dev-C++ ошибок не наблюдается.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:58, 04-02-2014 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4461
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Efimalex, если кратко, то Большая разница: int main() или void main()?
return 0 - возвращает ноль компилятору, свидетельствуя о том, что функция (программа) завершена правильно.
Иностранные источники:
stackoverflow.com What is the proper declaration of main
msdn.microsoft.com Main() Return Values (C# Programming Guide)
stackoverflow.com What should main return in c and c

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:59, 04-02-2014 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


lxa85, тут что-то всё в кучу — и C, и C++, и C#.

Отправлено: 09:26, 04-02-2014 | #5


Пользователь


Сообщения: 121
Благодарности: 35

Профиль | Отправить PM | Цитировать


Цитата lxa85:
return 0 - возвращает ноль компилятору »
Может быть операционной системе?

Отправлено: 09:39, 04-02-2014 | #6


Аватара для lxa85

Необычный


Contributor


Сообщения: 4461
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


torauma, может и операционной системе, не знаю.
Главное куда-то "вышестоящей системе", которая примет решение о дальней судьбе программы.
Операционной системы... Нашел.
Есть такая любопытная вещь OSv. (Краткая справка на opennet.ru)
Там куда 0 возвращается, тоже в операционную систему?
Или она там такая "тонкая", что почти как гипервизор?
Iska, на msdn явное упоминание С++ на нашел, т.к. С++ и С# языки родственные + на stackoverflow попадаются вырезки из стандартов, оставил.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 11:40, 04-02-2014 | #7


Пользователь


Сообщения: 121
Благодарности: 35

Профиль | Отправить PM | Цитировать


lxa85, не знаю как там OSv устроена, но в Линуксе и Винде, если я правильно помню, передается родительскому процессу. А передачей информации между процессами вроде как ОС занимается.
Точно могу сказать, что код завершения компилятору не передается, т.к. к моменту его передачи компилятор все свои задачи уже выполнил.

Отправлено: 13:03, 04-02-2014 | #8


Аватара для lxa85

Необычный


Contributor


Сообщения: 4461
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Цитата torauma:
Точно могу сказать, что код завершения компилятору не передается, т.к. к моменту его передачи компилятор все свои задачи уже выполнил. »
Или все таки компилятору?
Нет, в целом я согласен, что моя формилировка вызывает вопросы, просто спортивный интерес.

AFAIK программы написанные в среде .Net в строгом смысле не являются непосредственно исполняемыми на процессоре. Они находятся в некотором промежуточном коде, и исполняются компилятором "на лету". Т.е. компилируя программу в .NET мы получаем переносимый код. А его исполнение зависит от оболочки на каждой конкретной архитектуре. По смыслу очень похоже на технологию Java.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 14:31, 04-02-2014 | #9


Аватара для Efimalex

Пользователь


Сообщения: 76
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Спасибо, с этим вроде разобрался. Если что компилятор ставил как тут написано http://www3.ntu.edu.sg/home/ehchua/p...wTo.html#mingw

Отправлено: 22:50, 04-02-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите в изучении C.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[Ну помогите же человеку, а? :)] Помогите с конкурсом HTML64 Тест-форум 0 29-06-2012 10:33
CMD/BAT - [решено] помогите скачал себе этот вирус помогите его разблокировать orell Скриптовые языки администрирования Windows 2 05-05-2012 15:45




 
Переход