Я думаю ((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
.