iOS數據類型簡介及NSLog打印輸出

轉載:http://blog.csdn.net/tanhj/article/details/72526901

1. 數據類型簡介及輸出

(1) 數據類型簡介

數據類型簡介 : Object - C 數據類型 分為 基本數據類型, 構造類型 和 指針類型;

-- 基本數據類型 : 整型, 字符型, 浮點型 (float 和 double), 枚舉型;

-- 構造類型 : 數組類型, 結構體類型, 共用體類型;

-- 指針類型 : 最終要的數據類型,

所有的系統類, 自定義類都是指針;

-- 空類型 : 空類型只有一個值 nil, 該類型沒有名稱, 因此沒有空類型的變量, 變量不能轉換成空類型, 但是空類型可以轉換成任何引用類型;

(2) 數據類型輸出

NSLog()簡介 : NSLog 是 Foundation 框架中功能強大的函數, 可以輸出任何類型的數據;

-- 占位符 : NSLog() 函數中各式與 C 語言中大致相似, 第一個參數是加了 @ 的字符串, 后面的參數是用于替換占位符的;

整型占位符說明 :

-- %d : 十進制整數, 正數無符號, 負數有 "-" 符號;

-- %o : 八進制無符號整數, 沒有 0 前綴;

-- %x : 十六進制無符號整數, 沒有 0x 前綴;

-- %u : 十進制無符號整數;

--

%zd

NSInteger

--

**%tu **

無符號NSUInteger

字符占位符說明 :

-- %c : 單個字符輸出;

-- %s : 輸出字符串;

浮點占位符說明 :

-- %f : 以小數形式輸出浮點數, 默認 6 位小數;

-- %e : 以指數形式輸出浮點數, 默認 6 位小數;

-- %g : 自動選擇 %e 或者 %f 各式;

其它形式占位符 :

-- %p : 輸出十六進制形式的指針地址;

-- %@ : 輸出 Object-C 對象;

占位符附加字符 :

-- l : 在整型 和 浮點型占位符之前, %d %o %x %u %f %e %g 代表長整型 和 長字符串;

-- n(任意整數) : %8d 代表輸出8位數字, 輸出總位數;

-- .n : 浮點數 限制小數位數 , %5.2f 表示 5位數字 2位小數, 字符串 截取字符個數 ;

-- - : 字符左對齊;

示例代碼 :

[objc] view plain copy

#import <Foundation/Foundation.h>  
  
int main(int argc, charchar **argv)  
{  
    @autoreleasepool{  
        int a = 38;  
        long b = 38;  
        double c = 3.8;  
        double d = 2.3;  
        charchar * oct_c = "Octopus";  
        NSString *oct_oc = @"Octopus"; /* 定義字符串, 在字符串前加上 @ 說明是Ovject-C變量, 值賦給一個 NSString 指針 */  
        NSDate *date = [[NSDate alloc]init];  
  
        NSLog(@"%d 十進制整型", a);  
        NSLog(@"%5d 五位十進制整型", a);  
        NSLog(@"%-5d 左對齊的五位十進制整型", a);  
        NSLog(@"%o 八進制整型", a);  
        NSLog(@"%x 十六進制整型\n", a);  
  
        NSLog(@"%ld 長整型", b);  
        NSLog(@"%lx 十六進制長整型\n", b);  
          
        NSLog(@"%f 小數形式輸出浮點數", c);  
        NSLog(@"%e 指數形式輸出浮點數", c);  
        NSLog(@"%g 以最簡短形式輸出浮點數", c);  
        NSLog(@"%5f 以五位小數形式輸出浮點數", c);  
        NSLog(@"%5.3f 小數行書輸出, 一共五位, 小數3位\n", c);  
  
        NSLog(@"%lf 小數形式輸出長浮點數", d);  
        NSLog(@"%le 指數形式輸出長浮點數", d);  
        NSLog(@"%lg 以最短形式輸出長浮點數", d);  
        NSLog(@"%5lf 5位小數形式輸出長浮點數", d);  
        NSLog(@"%5.3lf 5位小數形式輸出長浮點數, 其中3位是小數\n", d);  
  
        NSLog(@"%s 輸出C字符串", oct_c);  
        NSLog(@"%@ 輸出Object-C字符串\n", oct_oc);  
  
        NSLog(@"%@ 輸出日期", date);  
  
  
  
    }  
}  

執行結果 :

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 02-NSLogDemo.m   
octopus-2:ios octopus$   
octopus-2:ios octopus$ ./a.out   
2014-08-16 19:32:44.210 a.out[1300:507] 38 十進制整型  
2014-08-16 19:32:44.212 a.out[1300:507]    38 五位十進制整型  
2014-08-16 19:32:44.213 a.out[1300:507] 38    左對齊的五位十進制整型  
2014-08-16 19:32:44.214 a.out[1300:507] 46 八進制整型  
2014-08-16 19:32:44.214 a.out[1300:507] 26 十六進制整型  
2014-08-16 19:32:44.215 a.out[1300:507] 38 長整型  
2014-08-16 19:32:44.215 a.out[1300:507] 26 十六進制長整型  
2014-08-16 19:32:44.216 a.out[1300:507] 3.800000 小數形式輸出浮點數  
2014-08-16 19:32:44.216 a.out[1300:507] 3.800000e+00 指數形式輸出浮點數  
2014-08-16 19:32:44.217 a.out[1300:507] 3.8 以最簡短形式輸出浮點數  
2014-08-16 19:32:44.217 a.out[1300:507] 3.800000 以五位小數形式輸出浮點數  
2014-08-16 19:32:44.218 a.out[1300:507] 3.800 小數行書輸出, 一共五位, 小數3位  
2014-08-16 19:32:44.218 a.out[1300:507] 2.300000 小數形式輸出長浮點數  
2014-08-16 19:32:44.219 a.out[1300:507] 2.300000e+00 指數形式輸出長浮點數  
2014-08-16 19:32:44.219 a.out[1300:507] 2.3 以最短形式輸出長浮點數  
2014-08-16 19:32:44.219 a.out[1300:507] 2.300000 5位小數形式輸出長浮點數  
2014-08-16 19:32:44.220 a.out[1300:507] 2.300 5位小數形式輸出長浮點數, 其中3位是小數  
2014-08-16 19:32:44.220 a.out[1300:507] Octopus 輸出C字符串  
2014-08-16 19:32:44.220 a.out[1300:507] Octopus 輸出Object-C字符串  
2014-08-16 19:32:44.226 a.out[1300:507] 2014-08-16 11:32:44 +0000 輸出日期

2. 整型

(1) 整型類型介紹

四種整型 :

-- short int : 短整型, 占16位, mac 上占 2 字節, iOS 上占 2 字節, 范圍 -32768(-2^15) ~ 32767(2^15 - 1), 3萬;

-- int : 整型, 占32位, mac 上占 4 字節, ios 上占 4 字節, 范圍 -2147483648(-2^31) ~ 2147483647(2^31 - 1), 21億;

-- long int : 長整型, 占64位, mac 上占 8 字節, ios 上占 4 字節, (-2^63) ~ (2^63 - 1), 922億億;

-- long long : 占64位, mac 上占 8 字節, ios 上占 8 字節;

整數賦值 : 整型賦值時注意范圍, 如果超出賦值范圍, 會出現警告, 數據也會丟失;

-- 示例程序 :


 /*************************************************************************
 File Name: a.m
 Author: octopus
 Mail: [octopus_truth.163.com](http://octopus_truth.163.com/)
Created Time: 日  8/17 00:44:19 2014
************************************************************************/

#import <Foundation/Foundation.h>  
  
int main(int argc, charchar * argv[])  
{  
    @autoreleasepool {  
        short int a = 50000; /* short int 范圍是 正負3萬, 因此超出范圍報錯 */  
        int a = 50000;  
  
        NSLog(@"short int a = %d", a);  
        NSLog(@"int a = %d", a);  
    }  
}  

-- 執行結果 :

octopus-2:~ octopus$ clang -fobjc-arc -framework Foundation a.m   
a.m:14:7: error: redefinition of 'a' with a different type: 'int' vs 'short'  
                int a = 50000;  
                    ^  
a.m:13:13: note: previous definition is here  
                short int a = 50000;  
                          ^  
1 error generated. 

(2) 進制介紹

八進制 十六進制賦值 : 八進制由 "0" 開頭, 十六進制由 "0x" 或者 "0X" 開頭;

-- 示例程序 :

#import <Foundation/Foundation.h>  
  
int main(int argc, charchar **argv)  
{  
    @autoreleasepool  
    {  
        int a = 010;    /* 八進制賦值 */  
        int b = 0x10;   /* 十六進制賦值 */  
        int c = 10;     /* 正常十進制賦值 */  
  
        NSLog(@"a = %d", a);  
        NSLog(@"b = %d", b);  
        NSLog(@"c = %d", c);  
  
        NSLog(@". . . . . ");  
  
        NSLog(@"a = %o", a);  
        NSLog(@"b = %x", b);  
    }  
    return 0;  
}  

-- 執行結果 :

1.  octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 03-IntDemo1.m
2.  octopus-2:ios octopus$ ./a.out   
3.  2014-08-17 00:58:50.513 a.out[1726:507] a = 8  
4.  2014-08-17 00:58:50.516 a.out[1726:507] b = 16  
5.  2014-08-17 00:58:50.516 a.out[1726:507] c = 10  
6.  2014-08-17 00:58:50.516 a.out[1726:507] . . . . .   
7.  2014-08-17 00:58:50.517 a.out[1726:507] a = 10  
8.  2014-08-17 00:58:50.517 a.out[1726:507] b = 10  

(3) 無符號整型

無符號整型 : 無符號整型 第一位 不是符號位, 范圍比原來要大, 例如 short int 范圍是 正負3萬, unsigned short int 范圍是 0到6萬, 將5萬賦值給 該類型不報錯;

-- 示例程序 :

[objc] view plain copy

  1. /*************************************************************************

  2. File Name: 03-IntDemo2.m

  3. Author: octopus

  4. Mail: octopus_truth.163.com

  5. Created Time: 日 8/17 01:02:39 2014

  6. ************************************************************************/

  7. import <Foundation/Foundation.h>

  8. int

    main(

**int**

 argc, 

**char**

**char**

 * argv[])
  1. {

  2. @autoreleasepool

    {

  3. unsigned

**short**

**int**

 a = 

5

0

0

0

0

;
  1. NSLog(
@"a = %d"

, a);
  1. }

  2. }

-- 執行結果 :

[plain] view plain copy

  1. octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 03-IntDemo2.m

  2. octopus-2:ios octopus$ ./a.out

  3. 2014-08-17 01:03:35.508 a.out[1745:507] a = 50000

<a name="t7" style="box-sizing: border-box; background: transparent; color: rgb(79, 161, 219); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a><a target="_blank" name="t7" id="t7" style="box-sizing: border-box; background: transparent; color: rgb(255, 153, 0); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a>

3. 字符型

字符型數據簡介 :

-- 單個字符表示 : 使用 '' 將單個字符引起來, 便是字符常量, 如 'a', 'b' 等;

-- 轉義字符表示 : 使用轉義符號 \ 來指定字符, 如 '\n' 等;

-- 字符占用空間大小 : 每個字符占用一個字節, 因此 Object-C 不支持中文字符, 因為中文字符都是占 2 ~ 3 個字節;

轉義字符 : 分為特殊空白字符 和 區別 單雙引號 和 反斜線的轉義;

-- 退格符 : '\b' ;

-- 換行符 : '\n' ;

-- 回車符 : '\r' ;

-- 制表符 : '\t' ;

-- 雙引號 : '"' ;

-- 單引號 : ''' ;

-- 反斜線 : '\' ;

int 與 char 類型關系 : char 類型可以當做 8 位無符號整數, 取值范圍 0 ~ 255;

-- int 賦值給 char : 將 int 類型賦值給 char 變量的時候, 會自動將類型轉為 char 類型;

char 類型 示例 :

[objc] view plain copy

  1. /*************************************************************************

  2. File Name: 05-charDemo.m

  3. Author: octopus

  4. Mail: octopus_truth.163.com

  5. Created Time: 二 8/19 21:10:37 2014

  6. ************************************************************************/

  7. import <Foundation/Foundation.h>

  8. int

    main(

**int**

 argc, 

**char**

**char**

 * argv[])
  1. {

  2. @autoreleasepool

    {

  3. char

    a =

'a'

;
  1. char

    b =

1

0

0

;
  1. char

    c =

'\n'

;
  1. NSLog(
@"a = %d"

, a);
  1. NSLog(
@"b = %c"

, b);
  1. NSLog(
@"c = %d"

, c);
  1. }

  2. }

執行結果

:

[plain] view plain copy

  1. octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 05-charDemo.m

  2. octopus-2:ios octopus$ ./a.out

  3. 2014-08-19 21:13:24.815 a.out[441:507] a = 97

  4. 2014-08-19 21:13:24.816 a.out[441:507] b = d

  5. 2014-08-19 21:13:24.817 a.out[441:507] c = 10

<a name="t8" style="box-sizing: border-box; background: transparent; color: rgb(79, 161, 219); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a><a target="_blank" name="t8" id="t8" style="box-sizing: border-box; background: transparent; color: rgb(255, 153, 0); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a>

4. 浮點型

浮點型數據類型 :

-- float : 占 4 字節;

-- double : 占 8 字節;

-- long double : 占 16 字節;

浮點數表示形式 :

-- 十進制形式 : 簡單的浮點數, 包含一個小數點, 如 3.8, 38.0, .38 等;

-- 科學計數法 : 3.8E2 或者 3.8e2 代表 3.8*10^2, 只有浮點數才能使用科學計數法;

Object-C 與 Java 浮點數區別 :

-- Java 浮點數 : Java 的 double 與 float 不同, 浮點數賦值給 float 需要加上 f 后綴;

-- Object-C浮點數 : 不區分 double 與 float, 一個浮點數 3.8 可以賦值給兩種類型的變量;

浮點數的特殊值 :

-- 正無窮大 : 正浮點數除以 0.0 得到正無窮大, 正無窮大都相等, 正整數除以 0.0 得到整數的邊界值, short int 除以 0.0 得到 32767(2^15 -1);

-- 負無窮大 : 負浮點數除以 0.0 得到負無窮大, 負無窮大都相等, 負整數除以 0.0 得到整數的邊界值, short int 除以 0.0 得到 -32768(2^15);

-- 非數 : 0.0 除以 0.0 得到一個非數, 非數與任何數包括其本身都不相等;

代碼示例 :

[objc] view plain copy

  1. /*************************************************************************

  2. File Name: 06-floatDemo.m

  3. Author: octopus

  4. Mail: octopus_truth.163.com

  5. Created Time: 三 8/20 01:08:35 2014

  6. ************************************************************************/

  7. import <Foundation/Foundation.h>

  8. int

    main(

**int**

 argc, 

**char**

**char**

 * argv[])
  1. {

  2. @autoreleasepool

    {

  3. /* 定義的10位的小數, 使用10位 %g 格式輸出, 結果 float 只能接收6位小數 */

  4. float

    a =

3

.888888888

;
  1. NSLog(
@"a = %10g"

, a);
  1. /* double 類型也只能接收6位有效值 */

  2. double

    b =

3

8

8

.8888888

;
  1. NSLog(
@"b = %10g"

, b);
  1. NSLog(
@"5.0 / 0.0 = %g"

, 

5

.0

 / 

0

.0

);
  1. NSLog(
@"正無窮大對比結果 = %d"

, 

5

.0

/

0

.0

 == 

5

0

0

/

0

.0

);
  1. double

    feiNum =

0

.0

 / 

0

.0

;
  1. NSLog(
@"0.0 / 0.0 = %g"

, feiNum);
  1. NSLog(
@"非數對比結果 = %d"

, feiNum == feiNum);
  1. /* 獲取邊界 */

  2. int

    bound

1

 = 

5

/

0

.0

;
  1. int

    bound

2

 = -

5

/

0

.0

;
  1. NSLog(
@"正邊界 = %d, 負邊界 = %d"

, bound

1

, bound

2

);
  1. }

  2. }

--

執行效果

:

[plain] view plain copy

  1. octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 06-floatDemo.m

  2. octopus-2:ios octopus$ ./a.out

  3. 2014-08-20 01:22:22.712 a.out[776:507] a = 3.88889

  4. 2014-08-20 01:22:22.714 a.out[776:507] b = 388.889

  5. 2014-08-20 01:22:22.714 a.out[776:507] 5.0 / 0.0 = inf

  6. 2014-08-20 01:22:22.714 a.out[776:507] 正無窮大對比結果 = 1

  7. 2014-08-20 01:22:22.715 a.out[776:507] 0.0 / 0.0 = nan

  8. 2014-08-20 01:22:22.715 a.out[776:507] 非數對比結果 = 0

  9. 2014-08-20 01:22:22.715 a.out[776:507] 正邊界 = 2147483647, 負邊界 = -2147483648

-- 注意情況 : 不能將 5/0.0 直接以 %d 形式打印, 否則會報以下錯誤;

[plain] view plain copy

  1. octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 06-floatDemo.m

  2. 06-floatDemo.m:29:44: warning: format specifies type 'int' but the argument has type 'double' [-Wformat]

  3. NSLog(@"正邊界 = %d, 負邊界 = %d", 5/0.0, -5/0.0);

  4. ~~ ^~~~~

  5. %f

  6. 06-floatDemo.m:29:51: warning: format specifies type 'int' but the argument has type 'double' [-Wformat]

  7. NSLog(@"正邊界 = %d, 負邊界 = %d", 5/0.0, -5/0.0);

  8. ~~ ^~~~~~

  9. %f

  10. 2 warnings generated.

<a name="t9" style="box-sizing: border-box; background: transparent; color: rgb(79, 161, 219); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a><a target="_blank" name="t9" id="t9" style="box-sizing: border-box; background: transparent; color: rgb(255, 153, 0); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a>

5. 枚舉類型

<a name="t10" style="box-sizing: border-box; background: transparent; color: rgb(79, 161, 219); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a><a target="_blank" name="t10" id="t10" style="box-sizing: border-box; background: transparent; color: rgb(255, 153, 0); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a>

(1) 定義普通枚舉

定義方式 : 格式 enum enum_name {elem1, elem2, elem3 ...} ;

-- 示例 : enum day{Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};

定義枚舉變量 : 格式 enum enum_name var1, var2 ;

-- 示例 : enum day today, tomorrow, 注意 today tomorrow 兩個變量的取值只能是 day 枚舉中定義的值;

枚舉變量賦值 : 格式 variable = elm1 ;

-- 示例 : today = Sunday; tomorrow = Friday;

<a name="t11" style="box-sizing: border-box; background: transparent; color: rgb(79, 161, 219); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a><a target="_blank" name="t11" id="t11" style="box-sizing: border-box; background: transparent; color: rgb(255, 153, 0); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a>

(2) 定義匿名枚舉

匿名枚舉格式 : enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday} today, tomorrow ;

-- 說明 : 兩個枚舉變量 today 和 tomorrow 只能取值 enum 中得枚舉值;

<a name="t12" style="box-sizing: border-box; background: transparent; color: rgb(79, 161, 219); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a><a target="_blank" name="t12" id="t12" style="box-sizing: border-box; background: transparent; color: rgb(255, 153, 0); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a>

(3) 枚舉值簡介

枚舉值常量 : 在 {} 中得是枚舉常量 或者 枚舉元素, 該元素不是變量, 不能對齊進行賦值, 枚舉的值按照定義的順序 0, 1, 2, 3 以此類推;

枚舉值本質 : 枚舉值屬于無符號整數, 可以使用 %u 占位符打印出來, 其值也能進行大小比較, 和四則運算;

枚舉初值 : 枚舉值可以在定義的時候賦予一個初值;

<a name="t13" style="box-sizing: border-box; background: transparent; color: rgb(79, 161, 219); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a><a target="_blank" name="t13" id="t13" style="box-sizing: border-box; background: transparent; color: rgb(255, 153, 0); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a>

(4) 枚舉示例

示例程序 :

[objc] view plain copy

  1. /*************************************************************************

  2. File Name: 07-enumDemo.m

  3. Author: octopus

  4. Mail: octopus_truth.163.com

  5. Created Time: 四 8/21 21:36:09 2014

  6. ************************************************************************/

  7. import <Foundation/Foundation.h>

  8. int

    main(

**int**

 argc, 

**char**

**char**

 * argv[])
  1. {

  2. @autoreleasepool

    {

  3. /* 定義一個枚舉 */

  4. enum

    day {Sunday =

6

, Monday = 

2

, Tuesday, Wednesday, Thursday, Friday, Saturday};
  1. /* 定義枚舉變量 */

  2. enum

    day today, tomorrow;

  3. /* 為枚舉變量賦值 */

  4. today = Wednesday;

  5. tomorrow = Thursday;

  6. /* 打印枚舉值 */

  7. NSLog(

@"today = %u"

, today);
  1. NSLog(
@"tomorrow = %u"

, tomorrow);
  1. enum

    {alive, die} state;

  2. state = alive;

  3. NSLog(

@"state = %d"

,  state);
  1. }

  2. }

執行結果

:

[plain] view plain copy

  1. octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 07-enumDemo.m

  2. octopus-2:ios octopus$ ./a.out

  3. 2014-08-21 21:49:01.414 a.out[664:507] today = 4

  4. 2014-08-21 21:49:01.416 a.out[664:507] tomorrow = 5

  5. 2014-08-21 21:49:01.416 a.out[664:507] state = 0

<a name="t14" style="box-sizing: border-box; background: transparent; color: rgb(79, 161, 219); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a><a target="_blank" name="t14" id="t14" style="box-sizing: border-box; background: transparent; color: rgb(255, 153, 0); text-decoration: none; margin: 0px; padding: 0px; font-weight: 400; outline: 0px;"></a>

6. 布爾型數據

BOOL 類型簡介 :

-- BOOL 類型值 : 該類型至右兩個值 YES 和 NO ;

-- BOOL 類型本質 : 該類型本質是 signed char, YES 是 1 , NO 是 0 , 在處理的時候 YES 會被當成真處理 , NO 會被當成假處理 ;

定義 BOOL 類型的系統源碼 :

[objc] view plain copy

  1. define OBJC_BOOL_DEFINED

  2. /// Type to represent a boolean value.

  3. typedef

    signed

    char

    BOOL

    ;

  4. // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"

  5. // even if -funsigned-char is used.

  6. if __has_feature(objc_bool)

  7. define YES __objc_yes

  8. define NO __objc_no

  9. else

  10. define YES ((BOOL)1)

  11. define NO ((BOOL)0)

  12. endif

代碼示例

:

[objc] view plain copy

  1. /*************************************************************************

  2. File Name: 08-boolDemo.m

  3. Author: octopus

  4. Mail: octopus_truth.163.com

  5. Created Time: 二 8/26 00:29:58 2014

  6. ************************************************************************/

  7. import <Foundation/Foundation.h>

  8. /* 判斷 a 是否大于 b */

  9. BOOL

    isBig(

**int**

 a, 

**int**

 b)
  1. {

  2. if

(a > b)
  1. {

  2. return

**YES**

;
  1. }

  2. return

**NO**

;
  1. }

  2. int

    main(

**int**

 argc, 

**char**

**char**

 * argv[])
  1. {

  2. @autoreleasepool

    {

  3. int

    a =

5

;
  1. int

    b =

3

;
  1. NSLog(
@"a 是否大于 b : %d"

, isBig(a, b));
  1. BOOL

    c =

1

;
  1. BOOL

    d =

2

;
  1. NSLog(
@"c = %d"

, c);
  1. NSLog(
@"d = %d"

, d);
  1. }

  2. }

執行結果

:

[objc] view plain copy

  1. octopus-

    2

    :ios octopus$ clang -fobjc-arc -framework Foundation

    0

    8

    -boolDemo

    .m

  2. octopus-

    2

    :ios octopus$ ./a

    .out

  3. 2

    0

    1

    4

    0

    8

    2

    6

    00

    :

    4

    0

    :

    4

    8

    .928

    a

    .out

    [

    1

    7

    5

    8

    :

    5

    0

    7

    ] a 是否大于 b :

    1

  4. 2

    0

    1

    4

    0

    8

    2

    6

    00

    :

    4

    0

    :

    4

    8

    .930

    a

    .out

    [

    1

    7

    5

    8

    :

    5

    0

    7

    ] c =

    1

  5. 2

    0

    1

    4

    0

    8

    2

    6

    00

    :

    4

    0

    :

    4

    8

    .931

    a

    .out

    [

    1

    7

    5

    8

    :

    5

    0

    7

    ] d =

    2

BOOL 類型賦值

:

-- BOOL 類型判斷 : BOOL 類型會將非 0 數字當做 YES 處理;

-- 大數字賦值 : 注意 BOOL 類型只有 8 位, 賦值的時候, 只要最后8位不為0, 那么 BOOL 類型就是 YES, 如果后 8 位為0, 那么 BOOL 為 NO;

-- 示例代碼 :

[objc] view plain copy

  1. /*************************************************************************

  2. File Name: 08-boolDemo1.m

  3. Author: octopus

  4. Mail: octopus_truth.163.com

  5. Created Time: 二 8/26 00:48:05 2014

  6. ************************************************************************/

  7. import <Foundation/Foundation.h>

  8. int

    main(

**int**

 argc, 

**char**

**char**

 * argv[])
  1. {

  2. @autoreleasepool

    {

  3. BOOL

    a =

2

5

6

;
  1. BOOL

    b =

5

1

2

;
  1. NSLog(
@"a = %d"

, a);
  1. NSLog(
@"b = %d"

, b);
  1. }

  2. }

--

編譯警告

:

[objc] view plain copy

  1. octopus-

    2

    :ios octopus$ clang -fobjc-arc -framework Foundation

    0

    8

    -boolDemo

    1

    .m

  2. 0

    8

    -boolDemo

    1

    .m

    :

    1

    3

    :

    1

    2

    :

    warning

    : implicit conversion from

    'int'

    to

    'BOOL'

    (aka

    'signed char'

    ) changes value from

    2

    5

    6

    to

    0

  3. [-Wconstant-conversion]

  4. BOOL

    a =

    2

    5

    6

    ;

  5. ~ ^~~

  6. 0

    8

    -boolDemo

    1

    .m

    :

    1

    4

    :

    1

    2

    :

    warning

    : implicit conversion from

    'int'

    to

    'BOOL'

    (aka

    'signed char'

    ) changes value from

    5

    1

    2

    to

    0

  7. [-Wconstant-conversion]

  8. BOOL

    b =

    5

    1

    2

    ;

  9. ~ ^~~

  10. 2

    warnings generated.

--

執行結果

:

[objc] view plain copy

  1. octopus-

    2

    :ios octopus$ ./a

    .out

  2. 2

    0

    1

    4

    0

    8

    2

    6

    00

    :

    5

    0

    :

    0

    0

    .705

    a

    .out

    [

    1

    8

    0

    2

    :

    5

    0

    7

    ] a =

    0

  3. 2

    0

    1

    4

    0

    8

    2

    6

    00

    :

    5

    0

    :

    0

    0

    .708

    a

    .out

    [

    1

    8

    0

    2

    :

    5

    0

    7

    ] b =

    0

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,996評論 2 374