小编Bel*_*now的帖子

"?:"发生了什么?我不知道返回类型

我认为((1 ? (int)1 : (unsigned int)2) > -1)结果是1(true),但实际上它0在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;
Run Code Online (Sandbox Code Playgroud)

我希望输出是1,但实际输出是0.

c unsigned signed ternary-operator conditional-operator

19
推荐指数
1
解决办法
1173
查看次数