检查一个NSInteger是奇数还是偶数

我一直试图检查一个NSInteger是奇数还是偶数。 我已经find了一种使用C的方法,但是它不适用于Objective-C。 我将如何做到这一点?

NSInteger被定义为int (或在某些环境中为int )。 所以检查奇怪是像纯int:

 NSInteger num; if (num % 2) // odd else // even 
 NSInteger n = 5; NSLog(@"%s", n & 1 ? "odd" : "even"); 

或者使用if

 if (n & 1) { ; // odd } else { ; // even } 

有一些输出:

 if (n & 1) { NSLog(@"odd"); } else { NSLog(@"even"); } 

指针示例:

 NSInteger x = 7; NSInteger *y = &x; if (*y & 1) { NSLog(@"odd"); } else { NSLog(@"even"); } 

据我所知。 与NSNumber不同的是, NSInteger只是一个真正的整数types,类似于:

 typedef long NSInteger; 

所以你应该能够做到:

 NSInteger nsintvar = 77; if ((nsintvar % 2) == 0) { // number is even } else { // number is odd } 

这是一个完整的程序,在Cygwin下用GNUstep编译,

 #import <stdio.h> #import <Foundation/NSObject.h> int main( int argc, const char *argv[] ) { NSInteger num; for (num = 0; num < 20; num++) { if ((num % 2) == 0) { printf ("%d is even\n", num); } else { printf ("%d is odd\n", num); } } return 0; } 

它输出:

 0 is even 1 is odd 2 is even 3 is odd 4 is even 5 is odd 6 is even 7 is odd 8 is even 9 is odd 10 is even 11 is odd 12 is even 13 is odd 14 is even 15 is odd 16 is even 17 is odd 18 is even 19 is odd 

那些其他答案应该工作。 也许这是你的makefile或其他问题。 在这段代码之外思考。

如果所有其他都失败只是将整数声明为int。 您不必将其声明为NSInteger。

使用“%”运算符。 从本质上说,当你分割一个数字的时候,它会解决剩下的问题。 所以:

2号

如果数字是偶数,那么将= 0,因为偶数除以2没有余数。 如果它不= 0,那一定是奇怪的。

 NSArray *arrayTotal = [NSArray arrayWithObjects:@"A", nil]; // NSArray *arrayTotal = [NSArray arrayWithObjects:@"A", @"B", nil]; // NSArray *arrayTotal = [NSArray arrayWithObjects:@"A", @"B", @"C", nil]; // NSArray *arrayTotal = [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", nil]; // NSArray *arrayTotal = [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", nil]; NSArray *arrLeft; NSArray *arrRight; NSRange range; range.location = 0; range.length = ([arrayTotal count] % 2) ? ([arrayTotal count] / 2) + 1 : ([arrayTotal count] / 2); arrLeft = [arrayTotal subarrayWithRange:range]; range.location = range.length; range.length = [arrayTotal count] - range.length; arrRight = [arrayTotal subarrayWithRange:range]; NSLog(@"Objects: %lu", (unsigned long)[arrLeft count]); NSLog(@"%@", [arrLeft description]); NSLog(@"Objects: %lu", (unsigned long)[arrRight count]); NSLog(@"%@", [arrRight description]); 

希望能帮助到你 !!!