Если у Вас есть следующие:ли короткое замыкание тройная оператора определенным образом
if (x)
{
y = *x;
}
else
{
y = 0;
}
Тогда поведение гарантированно определить, так как мы можем только разыменовать x
, если это не 0
Может то же самое можно сказать:
y = (x) ? *x : 0;
Это, кажется, работает, как ожидалось (даже скомпилирован с -Wpedantic
на г ++)
Гарантировано?
Да - Тернарный оператор - это просто синтаксический сахар –
Да. (Слишком короткий, чтобы быть отправленным как ответ). – JSF
В тройном выражении нет «короткого замыкания». И он преждевременно не оценивает и не выполняет какую-либо ветвь до того, как условие будет полностью оценено. –