[英]C Short to Int Conversion
给我一些看起来像这样的代码:
unsigned int x = 0xDEADBEEF;
unsigned short y = 0xFFFF;
if (x > (signed short) y)
printf("Hello");
但是,当y
强制转换为有符号的short(然后在比较中隐式转换为unsigned int)时, x > y
取MAX_UINT的值并不正确。 为什么会这样? y
是否扩展了标志,否则还会导致这种奇怪的行为?
对于未符合正负号类型正值的值,将进行无符号至正负号转换。 在这里,对于您的特定编译器,可能结果为-1
,然后转换为unsigned的是UINT_MAX
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.