天天看点

宏定义中的选择判断句

#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;

因为选择判断符比运算符的优先级低,所以会产生不是所要的结果,所以要写包含判断语句的宏定义时,一定要记住在选择判断句结束位置加上括号。

继续阅读