繁体   English   中英

C短整数转换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM