为什么条件运算符为第一个语句提供所需的结果而不是第二个语句?

时间:2015-08-06 11:15:56

标签: ios objective-c c

第二个是给出一些天蓝色

<script> 
    $(document).ready(function(){
        alert('Hi');
    });
</script>

1 个答案:

答案 0 :(得分:2)

你有一个括号问题。

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

可以重做为

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)(((rgbValue) & 0xFF0000) >> 16))/255.0 green:((float)(((rgbValue) & 0xFF00) >> 8))/255.0 blue:((float)((rgbValue) & 0xFF))/255.0 alpha:1.0]

应该可以解决您的问题,但会让宏更难以阅读。

你真的应该考虑让它成为一个合适的功能,而不是宏。

至少使用statement expression,因此rgbValue仅评估一次。

#define UIColorFromRGB(rgbValue) ({ unsigned v = rgbValue; [UIColor colorWithRed:((float)((v & 0xFF0000) >> 16))/255.0 green:((float)((v & 0xFF00) >> 8))/255.0 blue:((float)(v & 0xFF))/255.0 alpha:1.0]; })