Jos*_*hua 44 cocoa-touch objective-c
我一直试图检查NSInteger是奇数还是偶数.我找到了一种使用C来实现它的方法,但它不适用于Objective-C.我该怎么做?
Vla*_*mir 120
NSInteger定义为int(或long在某些环境中).所以检查奇怪就像普通的int:
NSInteger num;
if (num % 2)
// odd
else
// even
Run Code Online (Sandbox Code Playgroud)
ohh*_*hho 18
NSInteger n = 5;
NSLog(@"%s", n & 1 ? "odd" : "even");
Run Code Online (Sandbox Code Playgroud)
或使用if
if (n & 1) {
; // odd
} else {
; // even
}
Run Code Online (Sandbox Code Playgroud)
有一些输出:
if (n & 1) {
NSLog(@"odd");
} else {
NSLog(@"even");
}
Run Code Online (Sandbox Code Playgroud)
指针示例:
NSInteger x = 7;
NSInteger *y = &x;
if (*y & 1) {
NSLog(@"odd");
} else {
NSLog(@"even");
}
Run Code Online (Sandbox Code Playgroud)
据我所知.与之NSInteger不同的是NSNumber,它只是一个实数整数类型的打字机:
typedef long NSInteger;
Run Code Online (Sandbox Code Playgroud)
所以你应该能够做到:
NSInteger nsintvar = 77;
if ((nsintvar % 2) == 0) {
// number is even
} else {
// number is odd
}
Run Code Online (Sandbox Code Playgroud)
这是一个完整的程序,在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;
}
Run Code Online (Sandbox Code Playgroud)
它输出:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36682 次 |
| 最近记录: |