Objective c 目标c最小最大操作

Objective c 目标c最小最大操作,objective-c,math,Objective C,Math,你能给我解释一下为什么这个代码: NSInteger i = -1; NSUInteger x = 1; NSLog(@"min = %lu", MIN(i, x)); NSLog(@"max = %lu", MAX(i, x));; 印刷品 最小值=1 max=18446744073709551615这是因为i实际上被隐式转换为无符号整数。看见因此,它将滚动到18446744073709551615。比较两种不同的类型:有符号(NSInteger)和无符号(NSInteger)。最小/最大将

你能给我解释一下为什么这个代码:

NSInteger i = -1;
NSUInteger x = 1;
NSLog(@"min = %lu", MIN(i, x));
NSLog(@"max = %lu", MAX(i, x));;
印刷品 最小值=1


max=18446744073709551615

这是因为
i
实际上被隐式转换为无符号整数。看见因此,它将滚动到18446744073709551615。

比较两种不同的类型:有符号(NSInteger)和无符号(NSInteger)。最小/最大将全部转换为无符号整数

此外,负片NSInteger用%lu而不是%du打印。因此看到了一个很大的数字

NSInteger i = -1;
NSUInteger x = 1;
NSLog(@"min = %ld", MIN(i, (NSInteger)x));
NSLog(@"max = %ld", MAX(i, (NSInteger)x));

这是因为我正在被隐式转换为无符号long。这是xcode处理整数转换方式的一部分。这里有一个类似的帖子

您正在比较两种不同类型的对象。。。“最大”和“最小”在内部强制转换值。