Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.63
nafan9
2 / 2 / 0
Регистрация: 17.12.2009
Сообщений: 37
#1

оператор "?" - C++

19.07.2010, 11:51. Просмотров 5505. Ответов 2
Метки нет (Все метки)

C++
1
2
3
4
int fact( int x)
    {
    return x==1 ? 1:x*fact(x-1);
    }
что означает данное выражение? интересует вопросительный знак, как я понимаю это условие. ещё если можно объяснитель на другом примере по синтаксису, почему после "?" идёт 1, а не х.
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2010, 11:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос оператор "?" (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

C2678 бинарный ">>": не найден оператор, принимающий левый операнд типа "std::ostream" - C++
Код: #include <iostream> #include <memory> #include <typeinfo> #include <ctime> #include <windows.h> #include <ostream> ...

бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному - C++
бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору #include <iostream> ...

Error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" - C++
Вот ошибка 1>------ Построение начато: проект: ыпошряоям, Конфигурация: Debug Win32 ------ 1> файл.cpp 1>c:\users\hp\desktop\уроки...

Error C2678: бинарный "<<": не найден оператор, принимающий левый операнд типа "std::ifstream" - C++
Собственно, текст ошибки приведен в названии темы. Сам код: #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iomanip&gt; #include...

Бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" - C++
Подскажите, пожалуйста, как решить проблему. Хочу перегрузить оператор ввода, но никак не пойму, в чем дело #include&lt;iostream&gt; ...

2
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
19.07.2010, 12:06 #2
Это тернарный оператор. Синтаксис:
условие ? выражение1 : выражение 2;
Если условие верное, то вычисляется выражение1, в противном случае - выражение2.
0
Serg112
8 / 8 / 1
Регистрация: 28.06.2010
Сообщений: 24
19.07.2010, 13:41 #3
Эти две записи одинаковы.

C++
1
2
3
4
int fact( int x)
        {
        return x==1 ? 1:x*fact(x-1);
        }
C++
1
2
3
4
5
6
7
int fact( int x)
        {
        if( x == 1 )
          return 1;
        else
          return x*fact(x-1);
        }
Добавлено через 5 минут
По оператору ? могу дать простой пример:

x = (b > 0) ? 1 : 0;

если b больше нуля то x == 1 в противном случае x ==0
но опять оператор ? можно заменить оператором if

if( b > 0 )
x = 1;
else
x = 0;

Ещё пример:

x = (b > 0) ?( (b > 10) ? 11 : 9 ) : -1;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2010, 13:41
Привет! Вот еще темы с ответами:

Исправить ошибку:error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" - C++
Скажите пожалуйста, как исправить error C2678: бинарный &quot;&gt;&gt;&quot;: не найден оператор, принимающий левый операнд типа &quot;std::istream&quot; (или...

Error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое - C++
эмулятор работы банкомата Например #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;time.h&gt; #include...

error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::basic_istream<_Elem,_Traits>" - C++
Нужно из файла скачать информацию в объект. Почему у меня не получается? #include &lt;vector&gt; #include &lt;string&gt; #include &lt;iostream&gt; ...

Ошибка C2676 бинарный "[": "matr" не определяет этот оператор - C++
Компилятор возмущается:( Выдает ошибки: отсутствует оператор &quot;&quot;, соответствующий этим операндам Ошибка C2676 бинарный &quot;#include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru