Цитата(Genadi Zawidowski @ Oct 9 2013, 01:03)

Я бы ваши примеры слегка упростил, добавил симметрии и сделал чтобы они собирались.
Так ИМХО гораздо интереснее и вернее т.к. n является аргументом функции и не меняется предыдущими тестами.
Можно также понаблюдать результаты тестов 2 и 3, при изменении уровня оптимизации...
Код
#include <stdio.h>
#include <stdlib.h>
int test0(int n)
{
return (n > 0) ? n , 33 : n; // 33 Okay
}
int test1(int n)
{
return (n > 0) ? n : n, 33; // 33 Okay
}
int test2(int n)
{
return (n > 0) ? (n=0) : (n=33); // ??? and Error if missing ()
}
int test3(int n)
{
return (n > 0) ? (n=33) : (n=0); // ??? and Error if missing ()
}
int main(void)
{
printf("test0 = %d\n", test0(1));
printf("test1 = %d\n", test1(1));
printf("test2 = %d\n", test2(1));
printf("test3 = %d\n", test3(1));
return 0;
}