我有三个整数
int myI1 = 33;
int myI2 = 44;
int myI3 = 22;
我想确定什么是最高值,哪个是使用Objective-C
的最低值我不确定要走哪条路...... NSArray,int数组或其他东西。我知道我可以继续比较价值观,但我正在寻找更优雅和/或更通用的方法。
谢谢!
答案 0 :(得分:26)
将这些数字存储在数组中是很好的。简单的C数组就足够了,在Objective-C中性能最佳。要找到最低限度,您可以使用此功能。类似于最大值。
int find_min(int numbers[], int N){
int min = numbers[0];
for(int i=1;i<N;i++)
if(min>numbers[i])min=numbers[i];
return min;
}
如果只有三个数字,您可以手动进行比较以获得最佳性能。在Foundation / NSObjCRuntime.h中的Cocoa中有一个MIN()和MAX()宏。最大限度,只需:
int m = MAX(myI1, MAX(myI2, myI3));
这可以缩放到更多数字,并且可能比使用循环的第一种方法更快。
答案 1 :(得分:0)
不幸的是,在Cocoa中没有一种简洁优雅的方式。
Plain C Array +自定义循环将是最好的。使用NSArray,您必须将整数包装在NSNumbers中,而不会从中获得任何好处。
答案 2 :(得分:0)
Objective-C内置的MAX(a,b)
和MIN(a,b)
宏仅适用于两个值。
我创建了两个宏,用于使用2个或多个值,分别称为multi-max和multi-min(MMAX和MMIN)
这是他们的定义,只需将粘贴复制到您的.h
#define MMAX(...) ([@[__VA_ARGS__] valueForKeyPath:@"@max.self"])
#define MMIN(...) ([@[__VA_ARGS__] valueForKeyPath:@"@min.self"])
示例用法:
x = MMAX(2,3,9,5);
//sets x to 9.