0< 0 -1是真的吗?

时间:2012-02-16 23:59:07

标签: objective-c xcode cocoa

我理解类型转换有问题,从我的角度来看,这真的很糟糕:

月是NSArray 所以我没有物品: months.count == 0

这不会像它应该出现的那样工作0< 0 -1是真的吗?

(0 < months.count -1) == true

但这很好用

(0 < (int)months.count -1) == false

不明白为什么?

2 个答案:

答案 0 :(得分:5)

count返回NSUInteger,它是无符号的,因此months.count -1是无符号表达式,并且被计算为正数,因此大于0。

当你将它转换为int时,表达式(int)months.count -1被评估为signed,因此等于-1,小于0。

答案 1 :(得分:1)

NSArray documentation,我们可以看到count方法返回一个NSUInteger,它是一个无符号整数。通过从无符号0中减去1,我们得到了你实际可以获得的最大可能的无符号整数。