BOOL与bool的区别
2016-01-31 07:25
295 查看
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
看源码定义:
/// 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
相关文章推荐
- Java 解析 XML
- Java 解析 XML
- Java 解析 XML
- redis Ok2
- Codevs_P1732 Fibonacci数列 2(矩阵快速幂)
- Kth Largest Element in an Array -- LeetCode
- 注意OD仅以16进制解析指令立即数
- Leetcode 322. Coin Change
- redis OK
- Leetcode bit manipulation 总结
- BigBench: Toward An Industry-Standard Benchmark for Big Data Analytics
- 用PhysicsEditor快速创建自定义Box2D刚体
- LeetCode_79 Word Search
- LeetCode_78 Subsets
- LeetCode_77 Combinations
- 51Nod 质数中的质数(质数筛选好题)(数论)
- 【Leetcode】Binary Tree Level Order Traversal II
- moon UML
- CF618D - Hamiltonian Spanning Tree
- LeetCode_60 Permutation Sequence