无符号和有符号数据比较及其在内存中的表示

时间:2013-11-04 12:12:44

标签: c binary

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

据我所知,我知道无论何时将无符号类型与有符号类型进行比较.... signed会暂时将其转换为无符号。所以通过这个逻辑......上面的代码应该打印“Something”。

如果我喜欢这个......

    printf("%u",wVal2);    

它打印4294967286!...数字远远大于short int max + range,即65535。 无符号值-10将是65526.逻辑是否与我的想法不同?

1 个答案:

答案 0 :(得分:2)

是的,逻辑与你的想法不同。

逻辑由STL在The Usual Arithmetic Conversions上的视频完整解释。

(在比较中,双方被提升为int,所以你要比较65526和-10。)