С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 2
1

Нюансы синтаксиса: объяснить как работает тернарная операция в заданном фрагменте кода

26.08.2016, 03:44. Показов 763. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток! Помогите разобраться с кодом.
C++
1
2
3
4
const char x[2][20] = {"Jason ", "at your service\n"};
    const char * y = "Quillstone ";
    for (int i = 0; i < 3; i++)
        cout << ((i < 2) ? !i ? x[i] : y : x[1]);
Выводит как положено - Jason Quillstone at your service
Как это работает?
Методом тыка я пришел к тому, что
C++
1
 cout << ((i < 2) ? !i ? x[i] : y : x[1]);
, есть ни что иное как
C++
1
2
3
4
5
6
if (i < 2 && !i)
    cout << x[i];
else if (i < 2 || !i)
    cout << y;
else
    cout << x[1];
Но что то не пойму почему. всем спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Блог
26.08.2016, 03:44
Ответы с готовыми решениями:

Нюансы синтаксиса: объяснить использование ключевого слова typedef в заданном фрагменте кода
Всем привет. Недавно на просторах интернета столкнулся с таким кодом: typedef...

Нюансы работы с указателями: объяснить, что происходит в заданном фрагменте кода
Всем доброго времени суток! Я не до конца разобрался в данной теме. К примеру, есть такой кусок...

Нюансы синтаксиса: объяснить, что происходит в заданных участках кода
mas_tops=new node *; // что это строка значит? и зачем она нужна create_massiv_of_lists(node**...

Нюансы синтаксиса: объяснить что происходит в заданных строках кода
Разбираюсь со структурами. Подскажите, пожалуйста, что означает с 3 по 7 строку? Для чего так...

4
9 / 5 / 1
Регистрация: 15.08.2016
Сообщений: 48
26.08.2016, 04:06 2
Зачем знать как это работает? Работает, вот и пусть работает. Ничего не трогай
0
2082 / 1573 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
26.08.2016, 06:21 3
Цитата Сообщение от Докто Посмотреть сообщение
Но что то не пойму почему. всем спасибо!
Работает оно так потому что
Цитата Сообщение от Докто Посмотреть сообщение
, есть ни что иное как
На самом деле есть кое что немного другое:
C++
1
2
3
4
5
6
char *tmp;
if (i<2){
   if (!i) tmp=x[i];
   else tmp=y;
}else tmp=x[1];
cout<<tmp;
на самом деле тренарная операция краткая запись if-else для выбора варианта значения либо варианта назначения присваивания. при этом есть ограничения - оба значения должны быть одного типа.
2
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 2
26.08.2016, 09:09  [ТС] 4
Спасибо!

Добавлено через 1 час 44 минуты
только кажется, что бы все было четко, надо объявить указатель на const char
C++
1
const char *tmp;
0
2082 / 1573 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
26.08.2016, 11:54 5
То уже не столь важно. Результат операции просто оказывается на вершине стека а дальше с ним выполняется операция которая дальше. в просто if для этого надо это место в стеке где оказывается результат как то пометить.

Добавлено через 7 минут
кстати возможен и такой вариант операции:
C++
1
2
3
4
5
6
int main()
{
   int x,y,z;
   for (int c=0;c<3;c++) (c<2?!c?x:y:z)=(c+1)*5;
   cout<<"x:"<<x<<" y:"<<y<<" z:"<<z;
}
0
26.08.2016, 11:54
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
26.08.2016, 11:54
Помогаю со студенческими работами здесь

Объяснить, что происходит в заданном фрагменте кода
В подпрограмме Всё предельно ясно кроме одной строки - P.year=y-'0'; Объясните недалёкому что...

Объяснить, что происходит в заданном фрагменте кода
ifstream f(&quot;Базаданных.bd&quot;, ios::binary); f.read((char*)&amp;P,sizeof(P)); do { ...

Списки: объяснить, что происходит в заданном фрагменте кода
Помогите разобраться в коде, вот код с# public class Node { public string Data {...

Объяснить, что происходит в заданном фрагменте кода (шифр Цезаря)
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;sstream&gt;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru