C隐式转换?

Neb*_*ski 5 c unsigned implicit-conversion

有人可以向我解释如何

printf("%d", -2<2u?1:-1);
Run Code Online (Sandbox Code Playgroud)

打印出'-1'.我假设有某种隐式转换正在进行,但我似乎无法掌握它.

Cin*_*out 5

-2正在转变为unsigned integer.这将等于UINT_MAX - 1,绝对大于2.因此,条件失败并被-1打印.

  • @Nebeski不,将-2转换为`unsigned int`是隐式转换,如标题中所述.您无法直接比较已签名和未签名的数量,因此将其中一个转换为另一个. (3认同)