Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2015, 14:17   #1
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Здравствуйте!
В мейне есть две функции, каждые в разных файлах. Есть переменная rc - код ошибки. Первая функция возвращает rc. Необходимо в мейне написать проверку. Если первая функция вернула rc=0, то вызвать вторую функцию, в противном случае выдать сообщение об ошибке.

Не могу никак в мейне получить эту rc. Изначально проверку на ошибку делал только в теле первой функции, rc объявлял локально

Мои мысли такие

Код:
If (func(a,b) !=-1)
{
   printf("Функция отработала верно\n";
}
else printf("Ошибка\n";

Последний раз редактировалось Stilet; 16.03.2015 в 17:07.
Ka2R вне форума Ответить с цитированием
Старый 16.03.2015, 15:44   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Код:
int foo() {
 if (...) {
 ....
 some actions
 .... 
 return 1;
 }
 return 0;
}

int boo() {
 return 0;
}

main() {
if (!foo) {
 return 1;
} else {
 boo();
 return 0;
}
}
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 16.03.2015, 15:58   #3
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Код:
int foo() {
 if (...) {
 ....
 some actions
 .... 
 return 1;
 }
 return 0;
}

int boo() {
 return 0;
}

main() {
if (!foo) {
 return 1;
} else {
 boo();
 return 0;
}
}
Не могу понять что значит ! перед именем функции?

Цитата:
Сообщение от Ka2R Посмотреть сообщение
Не могу понять что значит ! перед именем функции?
Точнее я знаю, что это логическое отрицание, но прочитать отрезок этот не могу

Код:
if (!foo)

Последний раз редактировалось Stilet; 16.03.2015 в 17:08.
Ka2R вне форума Ответить с цитированием
Старый 16.03.2015, 16:09   #4
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Эта запись
Код:
!foo()
аналогично этой
Код:
foo() == 0
Видимо автор кода ошибся

А нет, можно вызывать без скобок. Проверил в компиляторе, для самого нонсанс ))

P.S вообще странно, что такая запись приемлема. В любом случае лучше так не писать, т.к можно перепутать с переменной.

Последний раз редактировалось Stilet; 16.03.2015 в 17:08.
Praud вне форума Ответить с цитированием
Старый 16.03.2015, 16:27   #5
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Цитата:
Видимо автор кода ошибся
Опечатался =)
Цитата:
P.S вообще странно, что такая запись приемлема. В любом случае лучше так не писать, т.к можно перепутать с переменной.
Угу, внезапно.

Цитата:
но прочитать отрезок этот не могу
Что есть if? If это проверка на то, является ли выражение истиной (1). Соответственно if (foo()) читается как "если функция foo вернула 1, то ...". При добавлении знака "!" осуществляется инвертирование результата, т.е. если функция вернет "1" - в if пойдет "0" и наоборот, и if (!foo()) читается как "если функция вернула не истину, то ..."
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 16.03.2015, 16:32   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Без скобок это будет не вызов функции, а указатель на функцию.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 16.03.2015, 16:38   #7
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Что есть if? If это проверка на то, является ли выражение истиной (1). Соответственно if (foo()) читается как "если функция foo вернула 1, то ...". При добавлении знака "!" осуществляется инвертирование результата, т.е. если функция вернет "1" - в if пойдет "0" и наоборот, и if (!foo()) читается как "если функция вернула не истину, то ..."
Спасибо большое за такое подробное объяснение! Теперь я все понял
Ka2R вне форума Ответить с цитированием
Старый 16.03.2015, 18:52   #8
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Что есть if? If это проверка на то, является ли выражение истиной (1). Соответственно if (foo()) читается как "если функция foo вернула 1, то ...". При добавлении знака "!" осуществляется инвертирование результата, т.е. если функция вернет "1" - в if пойдет "0" и наоборот, и if (!foo()) читается как "если функция вернула не истину, то ..."

Немного вас исправлю снова Если функция возвращает любое значение, отличное от 0 - то функция возвращает истину.

Код:
int foo() 
{
   return -1;
}

int main()
{
    if(!foo())
    {
        //Сюда мы не попадем
    }
}
Praud вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить, что строка не пустая - как быстрее xexxex Общие вопросы Delphi 11 23.10.2014 19:33
[C++] Не удаётся удалить динамическую строку, которую вернула функция Познающий Помощь студентам 1 18.05.2012 15:30
Как проверить что локальный сервер работает Kreadlling PHP 4 02.05.2011 20:53
Как проверить что массив полностью заполнен? ofenod Microsoft Office Excel 8 02.05.2011 18:12
Как проверить что windows запущена в защищенном режиме vitol Win Api 8 21.05.2010 12:02