iOS中的BOOL和bool
来源:互联网 发布:文明5 mac版 编辑:程序博客网 时间:2024/04/29 23:23
说明:objective-c 中的BOOL 实际上是一种对带符号的字符类型(signed char)的类型定义(typedef),它使用8位的存储空间。通过#define指令把YES定义为1,NO定义为0。
注意:objective-c 并不会将BOOL作为仅能保存YES或NO值的真正布尔类型来处理。编译器仍将BOOL认作8位二进制数,YES 和 NO 值只是在习惯上的一种理解。
问题:如果不小心将一个大于1字节的整型值(比如short或int)赋给一个BOOL变量,那么只有低位字节会用作BOOL值。如果该低位字节刚好为0(比如8960,写成十六进制为0x2300),BOOL值将会被认作是0,即NO值。而对于bool类型,只有true和false的区别,即0为false,非0为true。
举例:
BOOL b1=8960;// 实际是 NO,因为8960换成十六进制为0x2300,BOOL 只有8位存储空间,取0x2300的低8位,00,所以是NO
bool b2=8960;//实际是true,因为bool类型,非0即为true。
注意:objective-c 并不会将BOOL作为仅能保存YES或NO值的真正布尔类型来处理。编译器仍将BOOL认作8位二进制数,YES 和 NO 值只是在习惯上的一种理解。
问题:如果不小心将一个大于1字节的整型值(比如short或int)赋给一个BOOL变量,那么只有低位字节会用作BOOL值。如果该低位字节刚好为0(比如8960,写成十六进制为0x2300),BOOL值将会被认作是0,即NO值。而对于bool类型,只有true和false的区别,即0为false,非0为true。
举例:
BOOL b1=8960;// 实际是 NO,因为8960换成十六进制为0x2300,BOOL 只有8位存储空间,取0x2300的低8位,00,所以是NO
bool b2=8960;//实际是true,因为bool类型,非0即为true。
0 0
- iOS中的BOOL和bool
- ios中BOOL和bool的区别
- iOS中BOOL和bool的区别
- iOS--bool和BOOL的区别
- BOOL和bool
- BOOL 和bool
- BOOL 和 bool
- BOOL和bool
- BOOL 和bool
- BOOL和bool区别
- Bool和bool
- bool和BOOL
- iOS bool Bool boolean Boolean
- [iOS]BOOL / bool / Boolean / NSCFBoolean
- C++中的bool与BOOL
- vc中的BOOL不是bool
- BOOL
- bool
- Unity3D的几种坐标系
- 金融信息交换协议(FIX)5.0 FIXT1.1(7)
- Linux磁盘空间监控告警
- 自己还是他人
- 机器学习之基本概念
- iOS中的BOOL和bool
- 开发云服务器
- 海之归墟
- dubbo 的monitor监控中心 配置过程_linux
- 金融信息交换协议(FIX)——采用多播技术的FIX会话
- iOS后台任务
- Activity和Fragment生命周期
- Unity3D性能优化
- .net中创建table手动添加列