0
unsigned short int uwVal1=-10;short int wVal2=-10;
if(uwVal1==wVal2)
printf("Something");

据我所知,每当将无符号类型与有符号类型进行比较时......有符号将暂时将其转换为无符号。所以按照这个逻辑......上面的代码应该打印“Something”。

如果我喜欢这样...

    printf("%u",wVal2);    

它打印 4294967286!...number 远大于 short int max +range ie65535。-10 的无符号值将是 65526。逻辑与我的想法不同吗?

4

1 回答 1

2

是的,逻辑和你想的不一样。

STL 关于The Usual Arithmetic Conversions的视频充分解释了该逻辑。

(在比较中,双方都提升为int,因此您将比较 65526 和 -10。)

于 2013-11-04T12:14:50.217 回答