我知道当我们比较带符号和无符号时,编译器将我们的带符号值转换为无符号值,当我们比较short和int时,编译器将较小类型转换为较大类型。但是我编写了这段代码来检查我们是否比较了一个带符号的int x = 0xdeadbeef和unsigned short y = 0xffff,然后在将unsigned short转换为int之后,我们应该在y的比较处应该有0x0000ffff,它应该小于x的无符号值。但是我的代码没有进入if条件,即x大于y。有人可以向我解释为什么?C++中signed int和unsigned short的比较
代码片段:
#include<iostream>
using namespace std;
int main(){
unsigned int x=0xDEADBEEF;
unsigned short y= 0xFFFF;
if((signed)x > y)
cout<<"X is larger"<<endl;
return 0;
}
当运行的代码,不打印 “X较大”。
因为(有符号)x是负数。 – cleblanc
但是,当比较无符号到一个签名不应该编译器将其转换回无符号? –
btw你的代码是** C++ ** –