Я думаю ((1? (int)1: (unsigned int)2) > -1) приводит к 1 (true), но на самом деле это 0 (false) в Visual Studio 2017.
Я думаю, что значение (1? (int)1: (unsigned int)2) должно быть (int)1, потому что 1? верно, и 1 > -1 будет верно.
Я не знаю причину, по которой окончательный результат этого выражения неверен.
Когда я пытаюсь привести как ((int)(1? (int)1: (unsigned int)2) > -1), возвращается 1 (true).
signed int test = -1;
signed int si = 1;
unsigned int ui = 2;
printf("%d\n", ((1 ? si : ui) > test));
return 0;
Я ожидаю, что на выходе будет 1, но фактический результат равен 0.