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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Значение, возвращаемое функцией Main 
V
    Опции темы
Kellmir
Дата 31.8.2008, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вычитал в учебнике, что main возвращает только int или void, но
Код

#include <iostream>

char main() {
    std::cout << "Hello!!";
    return 'c';
}

 
компилится,  и прога запускается, это ошибка?
PM MAIL   Вверх
baldina
Дата 31.8.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



1. исполняющая среда всегда ожидает что main возвращает int
поэтому отличное от int main() есть потенциальная ошибка, о чем компилятор должен предупредить
2. язык не запрещает переопределять функции, так что можно main объявить по-разному

Добавлено через 5 минут и 23 секунды
переопределять - плохое слово. main не библиотечная функция, ее можно объявить произвольным образом. главное чтобы линкер скушал, но он в данном случае скушает любое (вроде бы у main связывание в стиле С, параметры не проверяются)
так что ты просто нарушаешь соглашение с операционкой, не более и не менее. это значит, что если кого-то интересует возвращаемое программой значение, он может получить совсем не то, что программист пытается вернуть. ожидается int, любое значение отличное от 0 означает что программа завершилась с ошибкой
PM MAIL   Вверх
Kellmir
Дата 31.8.2008, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за разъяснение
PM MAIL   Вверх
InvalidProperty
Дата 2.9.2008, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



return 'c'; возвращает ASCII-код символа 'c', преобразованный в int. Это можно понять, посмотрев описание таких функций, как, например, fgetc():
int fgetc(FILE *stream);
либо strchr():
char *strchr(const char *s, int c);


--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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