我得到了一些看起来像这样的代码:
unsigned int x = 0xDEADBEEF;
unsigned short y = 0xFFFF;
if (x > (signed short) y)
printf("Hello");
但是,x > y
当y
被强制转换为有符号短整数(然后在比较中隐式转换为无符号整数)时,它采用 MAX_UINT 的值是不正确的。为什么会这样?是否y
正在延长标志,或者还有什么会导致这种奇怪的行为?
我得到了一些看起来像这样的代码:
unsigned int x = 0xDEADBEEF;
unsigned short y = 0xFFFF;
if (x > (signed short) y)
printf("Hello");
但是,x > y
当y
被强制转换为有符号短整数(然后在比较中隐式转换为无符号整数)时,它采用 MAX_UINT 的值是不正确的。为什么会这样?是否y
正在延长标志,或者还有什么会导致这种奇怪的行为?