Objective c -1<;4返回否?它';太奇怪了 int计数器=-1; NSArray*pointArray=[[NSArray alloc]initWithObjects:@“1”,“2”,“3”,“1”,“2”,nil]; NSString*result=[NSString stringWithFormat:@“%d”,计数器

Objective c -1<;4返回否?它';太奇怪了 int计数器=-1; NSArray*pointArray=[[NSArray alloc]initWithObjects:@“1”,“2”,“3”,“1”,“2”,nil]; NSString*result=[NSString stringWithFormat:@“%d”,计数器,objective-c,arrays,Objective C,Arrays,您正在将有符号数字(-1)与无符号数字(pointArray.count-1)进行比较。请注意,以下代码再现了此问题: int counter=-1; NSArray *pointArray=[[NSArray alloc]initWithObjects:@"1",@"2",@"3",@"1",@"2", nil]; NSString *result=[NSString stringWithFormat:@"%d",counter<pointArray.count-1]; #包括 int

您正在将有符号数字(-1)与无符号数字(pointArray.count-1)进行比较。

请注意,以下代码再现了此问题:

int counter=-1;
NSArray *pointArray=[[NSArray alloc]initWithObjects:@"1",@"2",@"3",@"1",@"2", nil];
NSString *result=[NSString stringWithFormat:@"%d",counter<pointArray.count-1];
#包括
int main(int argc,char*argv[]){
nsu整数uns=4;
int-sig=-1;
BOOL-cmp=(sigNSLog(@“(%dExcept通常会导致无符号升级为有符号,IIRC。人们会认为。但是将
pointArray.count-1
分配给
int
,然后将
计数器
int
进行比较确实是正确的做法。
NSString*结果=[NSString stringWithFormat:@%d],计数器
#include <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
    NSUInteger uns = 4;
    int sig = -1;
    BOOL cmp = (sig < uns);
    NSLog(@"(%d<%zu)=%d", sig, uns, cmp);
}
 (-1<4)=0