Форум программистов, компьютерный форум CyberForum.ru

? : вместо if - C++

Восстановить пароль Регистрация
 
razor_ua
10 / 10 / 0
Регистрация: 20.05.2011
Сообщений: 71
20.06.2013, 23:43     ? : вместо if #1
C++
1
2
3
4
5
bool compare(const char* s1,const char* s2, int (*fp) (const char*, const char*) )
{
    ( !(*fp)(s1,s2) ) ? return true : return false;
 
}
пишет 2 ошибки:
1) на return true - требуется выражение
2) на ; - требуется двоеточие

А если оформить в виде

C++
1
2
3
if(!(*fp)(s1,s2))
        return true;
    else return false;
- тогда все ок.

в чем беда-то? просто интересно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Quantity
 Аватар для Quantity
12 / 12 / 1
Регистрация: 06.06.2012
Сообщений: 136
20.06.2013, 23:44     ? : вместо if #2
Надо не
C++
1
( !(*fp)(s1,s2) ) ? return true : return false;
А
C++
1
return ( !(*fp)(s1,s2) ) ? true : false;
razor_ua
10 / 10 / 0
Регистрация: 20.05.2011
Сообщений: 71
20.06.2013, 23:57  [ТС]     ? : вместо if #3
О.к., спасибо!
все же не пойму почему ошибка.

Эту конструкцию не обязательно же писать в return.

Или это связано с типом возвращаемого значения в данном случае?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
21.06.2013, 00:04     ? : вместо if #4
C++
1
2
3
4
bool compare(const char* s1,const char* s2, int (*fp) (const char*, const char*) )
{
    return !(*fp)(s1,s2);
}
и не смешите никого тернарным оператором в return в булевой функции
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6156 / 2885 / 281
Регистрация: 04.12.2011
Сообщений: 7,680
Записей в блоге: 3
21.06.2013, 00:16     ? : вместо if #5
Цитата Сообщение от razor_ua Посмотреть сообщение
Или это связано с типом возвращаемого значения в данном случае?
Это связано с синтаксисом. Тренарный оператор:
(выражение)? выражение : выражение ;
точка с запятой в конце, - окончание тренарного оператора.
Внутри никаких операторов не ожидается.
razor_ua
10 / 10 / 0
Регистрация: 20.05.2011
Сообщений: 71
21.06.2013, 00:30  [ТС]     ? : вместо if #6
спасибо всем, растолковали!
Yandex
Объявления
21.06.2013, 00:30     ? : вместо if
Ответ Создать тему
Опции темы

Текущее время: 00:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru