惊喜吧!
我有这样一个变量,
NSInteger index = 0;我将其与一个子视图计数(返回NSUInteger)进行比较,
if((index-1) <= [[currentmonth subviews] count])
{
NSLog(@"true");
}
else
{
NSLog(@"false");
}这总是给出假的.
但如果我愿意这样做,
if ((index-1) <= 42) {
NSLog(@"true");
} else {
NSLog(@"false");
}这总是给出真实的.
我觉得,这是因为我们不能将NSInteger与NSUInteger进行比较,对吗?
当我有了一个基于这个逻辑的工作解决方案时,我发现了这个问题。,但这完全不是真的.
发布于 2014-08-25 06:54:15
我找到这个了,NSUInteger对NSInteger,int对无签名,以及类似的情况
这个答案给出了很好的解释!
在处理NSUInteger和NSInteger时,还应该注意整数转换规则:
例如,下面的片段返回0 (false),尽管您希望它打印1 (true):
NSInteger si = -1;
NSUInteger ui = 1;
printf("%d\n", si < ui);原因是si变量被隐式转换为无符号int!
有关这些“问题”的深入讨论,以及如何解决这些问题,请参见CERT安全编码站点。
https://stackoverflow.com/questions/25480412
复制相似问题