天天看點

宏定義中的選擇判斷句

#define kViewWidth (isLowIPhone6?(375.0f): iWidthScreen)

#define kViewWidth isLowIPhone6?(375.0f): iWidthScreen
           

這兩個宏定義使用中的結果一樣嗎?

1、當裝置是iPhone6或以上時

前者的結果是 375.0f - iWidthScreen;// edge = (1?(375.0f): iWidthScreen) - iWidthScreen;

後者的結果是 375.0f; // edge = 1?(375.0f): iWidthScreen - iWidthScreen;

2、當裝置低于iPhone6時

前者的結果是 0;// edge = (0?(375.0f): iWidthScreen) - iWidthScreen;

後者的結果是0;// edge = 0?(375.0f): iWidthScreen - iWidthScreen;

因為選擇判斷符比運算符的優先級低,是以會産生不是所要的結果,是以要寫包含判斷語句的宏定義時,一定要記住在選擇判斷句結束位置加上括号。

繼續閱讀