В Lua, вы можете сделать это:Эквивалент Lua "и/или" в C++?
foo = a and b or c and d or e
что эквивалентно (по крайней мере, я уверен, что это эквивалентно):
local foo = nil
if a then
foo = b
elseif c then
foo = d
else
foo = e
end
Есть ли что-нибудь эквивалент или похожее на это C++?
Что смешно в отношении приоритета??: '? Он ниже, чем любой оператор, не назначающий и превышающий все присваивающие, и все. Поэтому вы можете легко оставить внешние скобки. Что еще более забавно, так это его _associativity_, поэтому вам нужны параны между вложенными '?:' S. – leftaroundabout
@leftaroundabout у него нет приоритета, которого я ожидал бы от него. Пример: http://stackoverflow.com/q/10007140/382471 – robert
Предшествование вполне разумно: оно имеет смысл писать такие вещи, как 'Foo = с ==«х»? x: y' или 'foo = a || b? x: y', поэтому он должен иметь более низкий приоритет, чем операторы логического и сопоставления. - Кроме того, мне нужно взять обратно то, что я сказал об ассоциативности: это просто право-ассоциативный, так что вы также можете оставить внутренние парады. Хотя вам следует распространить выражение на три строки с подходящим отступом, в противном случае оно станет нечитаемым. – leftaroundabout