国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

預處理程序之#define的使用

2019-11-14 18:30:48
字體:
來源:轉載
供稿:網友
 1 #import <Foundation/Foundation.h> 2  3 /** 1.define語句:預定義名稱右邊的所有字符都會被預處理程序替換到程序中 */ 4 /** 5  * 使用注意: 6  * 1.預定義名稱不是變量,不能給它賦值,除非替換指定值的結果實際上是一個變量; 7  * 2.語句末尾不能出現分號“;”; 8  * 3.預處理程序定義的右面不必是合法的Objective-C表達式,如 #define AND && 9  * 4.預定義的值可以引用另一個預定義的值,如10  #define PI 3.14159265411  #define TWO_PI 2.0 * PI // 兩個表達式前后顛倒也是合法的12  [規則:在程序中使用預定義名稱時,只要所有的符號都是定義過的,那么就可以在定義中引用其他預定義的值]13  */14 15 /** 命名規范:預定義的名稱都用大寫,如PI,或者在定義之前加k,但k之后的字符并不全部大寫,如kMaxValues; */16 17 /** 1.1 簡單使用 */18 #define PI 3.14159265419 #define TWO_PI 2.0 * PI20 21 /** 1.2 檢測變量year是不是閏年 */22 /**23 #define IS_LEAP_YEAR year % 4 == 0 && year % 100 != 0 /24         || year % 400 == 0 // if (IS_LEAP_YEAR)25 // 上面的define實際上是這個意思: if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)&hellip;…26 */27 28 /** 1.3 將IS_LEAP_YEAR定義為帶有一個名為y的參數,來判斷任何一年是否為閏年 */29 #define IS_LEAP_YEAR(y) y % 4 == 0 && y % 100 != 0 /30         || year % 400 == 0 // 這里沒有定義參數y的類型,因為這里僅執行字面文本替換,并沒有調用函數,注意:預定義名稱和參數列表的左括號之間不允許空格31 // if (IS_LEAP_YEAR(nextYear)) 用來判斷nexYear的值是不是閏年32 // 上面的define實際上是這個意思: if (nextYear % 4 == 0 && nextYear % 100 != 0 || nextYear % 400 == 0) ……33 34 /** 1.4 帶參數的宏定義的一個“小陷阱” */35 #define SQUARE(x) x * x36 // y = SQUARE(v) 等價于 y = v ^ 2;而y = SQUARE(v + 1) 等價于 y = v + 1 * v + 1,而不是等于 y = (v + 1) * (v + 1)。因為與處理程序對宏定義的參數是實行文本替換的,要想解決這個問題,需要加括號, #define SQUARE(x) ((x) * (x))37 38 /** 1.5 練習:創建個分數 */39 #define MakeFract(x,y) ([[Fraction alloc] initWith: x over: y])40 // 創建分數1/3 myFract = MakeFract(1,3);41 42 /** 1.6 注意:運算符的優先級的問題43   * &運算符是按位AND運算符,它的優先級低于宏中使用的>運算符。如果宏定義中沒有括號,>運算符將在按位AND之前求值。44   * 題: #define IS_LOWER_CASE(x) ( ((x) >= 'a') && ((x) <= 'z') )45  */46 47 48 @interface Circle : NSObject49 @PRoperty(nonatomic, assign) int radius; // 圓的半徑50 @property(nonatomic, assign) int year;51 - (double)area;52 - (double)circumference;53 @end54 55 56 @implementation Circle57 - (double)area58 {59     return PI * _radius * _radius;60 }61 - (double)circumference62 {63     return 2.0 * PI * _radius;64     return TWO_PI * _radius;65 }66 @end67 68 69 int main(int argc, const char * argv[]) {70     @autoreleasepool {71         Circle *c = [[Circle alloc] init];72         c.radius = 5;73         NSLog(@"圓的面積是%f平方米,圓的周長是%f米", [c area], [c circumference]);74     return 0;75     }76 }

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开阳县| 阿坝| 镶黄旗| 临澧县| 沂源县| 五峰| 鹤壁市| 册亨县| 历史| 北票市| 凤庆县| 永嘉县| 福建省| 泰宁县| 环江| 青海省| 盐池县| 乌拉特中旗| 龙南县| 新泰市| 大同县| 洪雅县| 比如县| 德安县| 诸城市| 巴青县| 玛沁县| 庆阳市| 铜陵市| 确山县| 灵山县| 雷州市| 东平县| 闸北区| 诏安县| 原阳县| 青海省| 曲靖市| 奇台县| 三江| 凤城市|