BOOL与bool的区别

bool是c++上的,而BOOL时Obejctive-C的。

看源码定义:

/// Type to represent a boolean value.
#if (TARGET_OS_IPHONE && __LP64__)  ||  TARGET_OS_WATCH
#define OBJC_BOOL_IS_BOOL
1
typedef bool BOOL ;
#else
#define OBJC_BOOL_IS_CHAR
1
typedef signed char BOOL ;
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"
// even if -funsigned-char is used.
#endif

#if __has_feature(objc_bool)
#define YES __objc_yes
#define NO  __objc_no
#else
#define YES ((BOOL)
1 )
#define NO  ((BOOL)
0 )
#endif

即在iOS64位或Apple Watch上,BOOL跟bool一样是一个整型,如果在Mac OS X或iOS 32位则是一个char。

可以验证,运行以下代码,看输出

    NSLog ( @"YES:%ld" , sizeof ( YES ));   //1
  NSLog ( @"true:%ld" , sizeof ( true ));  //4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值