您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页OC 中 BOOL 和 bool 的区别

OC 中 BOOL 和 bool 的区别

来源:二三娱乐
说明:

最近在写OC时被问到,为什么我用true/false而不用YES/NO。原因是之前写其他语言时养成了习惯,并将这种习惯带到了OC上。另外我暂时也未发现使用true/false完全替代YES/NO有何弊端。今天突然想起便仔细 Google 了这个问题,方才清楚OCBOOLbool的区别,特此记之。

简单总结:
  • BOOL is actually a signed char type.
    typedef signed char        BOOL;
    #define YES             (BOOL)1
    #define NO              (BOOL)0
    
  • Avoid comparing BOOL to YES.
    零值的 BOOL 即是 “NO”,而非零的 BOOL 并非 “YES” 除了 1。
    这与我们使用 bool 是不同的:“false” 等价 0,“true” 等价于非零。
    
  • 可在OC代码中使用true/false完全替代YES/NO,因为编译器会在两者之中自动进行正确的类型转换。尽管可能带来一些性能开销,但这些开销实在微不足道。

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务