|
0 / 0 / 0
Регистрация: 21.09.2019
Сообщений: 101
|
|
Какое значение будет в тернарных операциях?27.10.2019, 13:39. Показов 1185. Ответов 16
Какое значение будет в тернарных операциях? операнд a т.е. первый может быть числом (веществ или целым) или вовсе указателем:это 3 действия
c = a > b ? a : b; c = (a * b) > 0; c = a > 0 ? a : -a;
0
|
|
| 27.10.2019, 13:39 | |
|
Ответы с готовыми решениями:
16
Какое значение будет иметь а? Какое значение будет принимать переменная? Какое будет значение каждого тока |
|
Мозгоправ
|
||||||
| 27.10.2019, 17:20 | ||||||
|
olavin, тренарная операция - это примерно так:
0
|
||||||
|
207 / 58 / 19
Регистрация: 18.02.2018
Сообщений: 256
|
||||||||||||||||
| 27.10.2019, 17:43 | ||||||||||||||||
|
Смотрим википедию:
"In computer programming, ?: is a ternary operator that is part of the syntax for basic conditional expressions in several programming languages. It is commonly referred to as the conditional operator, inline if (iif), or ternary if. An expression a ? b : c evaluates to b if the value of a is true, and otherwise to c. One can read it aloud as "if a then b otherwise c"." В чем суть тернарной конструкции? - в том, что она прекрасна для небольших проверок. Разберёмся в обыкновенной условной конструкцией if: ты подаёшь выражение в условие, которое, в конечном счёте будет либо ложным, либо истинным. Например, в Си, результат оценивается по его значению. Ты, наверное, знаком с таким способ зацикливания программы:
Кликните здесь для просмотра всего текста
> "Nahn! True - это 1, а false - 0. Никаких других значений!"
https://www.cs.uic.edu/~jbell/... sions.html А теперь вернёмся к ИФу. В зависимости от значения, которое получилось в скобочках, грубо говоря, программа будет решать что делать. Но почему сразу if, коль циклы, свитчи, etc, работают, по сути, точно также? - потому что мы говорим про тернарный оператор, который тесно связан именно с ИФом. Тернарная конструкция отличается от if лишь, тем что она поддерживает лишь по одному выражению в каждом операнде.
0
|
||||||||||||||||
|
Мозгоправ
|
|||
| 28.10.2019, 00:29 | |||
|
Ksyrx, позвольте уточнить:
,. Хотя это и извращение. Но в общем вы правы.Основное отличие от if в том, что тренарная операция возвращает результат. Что накладывает на второй и третий операнды ограничение: эти выражения должны возвращать результат одного типа. В противном случае можно получить либо ошибку компиляции, либо не получить ошибку компиляции, если компилятор сумеет сделать приведение типа второго операнда к типу первого (иногда очень неочевидное преобразование), на чём можно поиметь весьма загадочное поведение программы.
0
|
|||
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
|
||||
| 28.10.2019, 01:20 | ||||
?: сам по себе целиком является выражением, а конструкция с if выражением не является.При использовании арифметических значений в логических контекстах 0 расценивается как "ложь", а все остальное - как "истина". Это касается и преобразований арифметических значений к типу _Bool.В противоположную же сторону: логические выражения в языке С порождают только 0 или 1 в качестве результата.
0
|
||||
|
0 / 0 / 0
Регистрация: 21.09.2019
Сообщений: 101
|
|
| 28.10.2019, 13:40 [ТС] | |
|
А что это за операция a : b (это присваивание)?
Добавлено через 46 минут а как понять это если истина, то c = a > 0 ? a : -a;
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|||||||
| 28.10.2019, 14:14 | |||||||
:Зато есть оператор ?: (x?y:z) означает "если x истина, вернуть y, если ложь - вернуть z".Чуть ли не единственный пример, где тернарный оператор удобнее обычного условия:
1
|
|||||||
|
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,315
|
|
| 28.10.2019, 19:12 | |
|
olavin, первый пример:
c = a > b ? a : b; if (a>b) c = a; else c = b; второй: c = (a * b) > 0; if (a*b > 0) c = !0; else c = 0; третий: c = a > 0 ? a : -a; if (a>0) c = a; else c = -a;
0
|
|
|
207 / 58 / 19
Регистрация: 18.02.2018
Сообщений: 256
|
||||
| 08.11.2019, 20:13 | ||||
![]() Добавлено через 1 минуту Добавлено через 6 минут Я попытался написать понятно. Если ты не понял - напиши по-своему так, как считаешь, якобы, лучше. Более грубо: одно выражение после ИФ - это то, что идёт после вопросика (!). А после else - то, что идет после двоеточия. Думаю, на форуме программистов, в разделе "Си для начинающих", всем известно, что тернарная конструкция в Си допускает лишь по одному выражению после каждого оператора, и это объяснять - не нужно.
0
|
||||
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
|
||
| 08.11.2019, 20:17 | ||
|
0
|
||
|
207 / 58 / 19
Регистрация: 18.02.2018
Сообщений: 256
|
|||||||
| 08.11.2019, 20:23 | |||||||
|
Ты знаком с битовыми полями? А-ля какому-нибудь definition простенькой структурки, ты бы мог написать так, если бы хотел "выровнять" битовую ширину каждого поля под свои нужды (весьма полезная штука в сетевом):
0
|
|||||||
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
|
|||||||||||||||
| 08.11.2019, 20:26 | |||||||||||||||
?: обычно имеют вид
if допускает лишь по одному statement в истинной и ложной ветви. Но мне не совсем понятно, какой глубинный смысл вы вкладываете в это "по одному". При чем здесь это вообще?
0
|
|||||||||||||||
|
207 / 58 / 19
Регистрация: 18.02.2018
Сообщений: 256
|
||||
| 08.11.2019, 20:28 | ||||
|
0
|
||||
|
фрилансер
6455 / 5657 / 1129
Регистрация: 11.10.2019
Сообщений: 15,070
|
|
| 08.11.2019, 20:28 | |
|
Ksyrx, это не оператор, а часть синтаксиса. Ещё двоеточие ставится после метки для goto или switch
0
|
|
|
207 / 58 / 19
Регистрация: 18.02.2018
Сообщений: 256
|
||
| 08.11.2019, 20:31 | ||
|
Короче, вы со мной, простите, сраться решили? Я делать этого не собираюсь. Я объяснил вам, что имел ввиду. Не поняли, пафосный пушистик, ответьте, опять-таки, по-своему. Зачем касаться меня? У вас разрыв шаблона? Так не смотрите на мои ответы...
0
|
||
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
|
||||
| 08.11.2019, 20:39 | ||||
|
Во-вторых, здесь у нас - технический форум, конференция по языку С, а не дворовая тусовка. Постарайтесь привыкнуть к тому, что всякий раз, когда вы будете нести чушь, вас будут поправлять, как и в любом другом техническом форуме. В этом нет никаких попыток "сраться". Более того, когда кто-то поправляет ваши ошибки (параллельно преподавая вам урок), возьмите в привычку говорить за это "спасибо". Если вас подобное положение вещей не устраивает, то, боюсь, в технических форумах вы не приживетесь.
0
|
||||
|
Мозгоправ
|
|||||||
| 08.11.2019, 20:41 | |||||||
|
Ksyrx, ок, вы сначала написали, что "единственное значение, которое оценивается как ложное - ноль" и следующим абзацем, под спойлером, цитируете "Nahn! True - это 1, а false - 0. Никаких других значений!" (кстати, я не нашёл слова Nahn по указанной вами ссылке). Вы как-то уж сами определитесь, что вы хотели сказать.
0
|
|||||||
| 08.11.2019, 20:41 | |
|
Помогаю со студенческими работами здесь
17
Какое значение будет иметь переменная d Какое значение будет выведено при выполнении операторов? Какое значение будет напечатано в результате выполнения программы? Какое значение будет выведено в результате работы программы? Какое значение будет выведено в результате выполнения программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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. Пошагово создадим проект для загрузки изображения. . .
|