По крайней мере, в C++, что фрагмент кода, по существу, эквивалентно следующему:
if(some_condition)
{
x = 100;
}
else
{
y = 100;
}
Это гарантируется стандартом C++, хотя вы должны внимательно прочитать соответствующие разделы. Правила оператора удивительно сложны (главным образом, из-за преобразований типов, которые выполняются), поэтому условный оператор и оператор if-then-else не совсем эквивалентны все время.
Однако во фрагменте кода выше, этот пункт в стандарте имеет отношение:
5,16/4 Условный оператор:
Если второй и третий операнды lvalues и имеют тот же тип, результат этого типа и является значением lvalue.
Я тоже пробовал это в C. Оно работает. (Я использовал CodeBlocks/Mingw, но я предполагаю, что он также работает с другими компиляторами) – user2011
Итак, я понял, что это должно работать только на C++, если спецификации соблюдены? – user2011
Да, он работает на C++, но не в C, как я сказал в своем ответе. –