【发布时间】:2015-06-25 11:53:12
【问题描述】:
#include <iostream>
int main()
{
signed int a = 5;
unsigned char b = -5;
unsigned int c = a > b;
std::cout << c << std::endl;
}
此代码打印0。
谁能解释一下这里发生了什么?我猜编译器会将a 和b 转换为相同类型(可能是unsigend int)并进行比较。
【问题讨论】:
-
您可能想了解integral conversions。
-
你可以把
unsigned char b = -5想象成首先声明一个int-5,然后将它赋值给unsigned char。如果为 -5,则赋值仅使用低位,因此b将是 251
标签: c++ compare unsigned signed