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

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

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

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Помогите разобраться с кодом.
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.08.2016, 03:44
Ответы с готовыми решениями:

Нюансы синтаксиса: объяснить использование ключевого слова typedef в заданном фрагменте кода
Всем привет. Недавно на просторах интернета столкнулся с таким кодом: typedef double(*pointFunc)(double); double f(double x) { ...

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

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

4
 Аватар для Sretenkov
9 / 5 / 1
Регистрация: 15.08.2016
Сообщений: 48
26.08.2016, 04:06
Зачем знать как это работает? Работает, вот и пусть работает. Ничего не трогай
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
26.08.2016, 06:21
Цитата Сообщение от Докто Посмотреть сообщение
Но что то не пойму почему. всем спасибо!
Работает оно так потому что
Цитата Сообщение от Докто Посмотреть сообщение
, есть ни что иное как
На самом деле есть кое что немного другое:
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  [ТС]
Спасибо!

Добавлено через 1 час 44 минуты
только кажется, что бы все было четко, надо объявить указатель на const char
C++
1
const char *tmp;
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
26.08.2016, 11:54
То уже не столь важно. Результат операции просто оказывается на вершине стека а дальше с ним выполняется операция которая дальше. в просто 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.08.2016, 11:54
Помогаю со студенческими работами здесь

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

Объяснить, что происходит в заданном фрагменте кода
В подпрограмме Всё предельно ясно кроме одной строки - 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 { get; set; } public Node...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru