objective-c中的BOOL类型和变量的作用范围与c的比较

1 #import <Foundation/Foundation.h>
2
3  int a,b,c;//静态变量
4
5 int main (int argc, const char * argv[])
6 {
7
8 NSLog(@"BOOL type size:%d",sizeof(BOOL));//typedef signed char BOOL
9
10 if(FALSE == 0)//#define FALSE 0
11 {
12 NSLog(@"FALSE == 0 FALSE is %d",FALSE);
13 }
14 else
15 {
16 NSLog(@"FALSE != 0");
17 }
18
19 if(TRUE == 1)//#define TRUE 1
20 {
21 NSLog(@"TRUE == 1 TRUE is %d",TRUE);
22 }
23 else
24 {
25 NSLog(@"TRUE !== 1");
26 }
27
28 BOOL bool_var;//check BOOL is signed char or not?
29 char c = 128;
30 bool_var = c;
31 NSLog(@"%d",bool_var);
32
33 //测试objc中是否也将0作为真非0作为假。测试结果跟c一样。所以objec中的BOOL类型应该只是定义来作为一个规范。
34 int is_bool = -1;
35 if(is_bool)
36 {
37 NSLog(@"非0直都是true");
38 }
39
40 //静态变量和自动变量(变量的存储类型)
41 int d,e;//自动变量
42 NSLog(@"d=%d e=%d a=%d b=%d c=%d",d,e,a,b,c);//输出结果显示,跟c一样,静态变量会自动初始化为0,自动变量的值是一个“随机”数
43
44 //测试变量的作用域代码块作用域
45 if(TRUE)
46 {
47 int mm = 123;
48 }
49 NSLog(@"mm=%d",mm);//mm定义在子代码块内,外部不能访问。编译这段代码时将提示“mm”undeclared
50
51 return 0;
52 }
输出结果:
2011-05-21 14:18:52.474 console[1766:903] BOOL type size:1
2011-05-21 14:18:52.477 console[1766:903] FALSE == 0 FALSE is 0
2011-05-21 14:18:52.477 console[1766:903] TRUE == 1 TRUE is 1
2011-05-21 14:18:52.478 console[1766:903] -128
2011-05-21 14:18:52.478 console[1766:903] 非0直都是true
2011-05-21 14:18:52.479 console[1766:903] d=32767  e=1606416680 a=0 b=0 c=-128

posted @ 2011-05-21 14:18  zendPger  Views(1552)  Comments(0Edit  收藏  举报