OC中使用布尔类型的注意事项
来源:互联网 发布:美国人的聊天软件 编辑:程序博客网 时间:2024/06/05 01:02
taylor总结:在objective-c中,永远不要用BOOL值与YES比较,因为非零值未必是BOOL 的YES,但是0 一定是NO。
Objective-C中的布尔类型:
早期的C 语言中是没有布尔类型的(C99 增加了布尔类型),Objective-C 中增加BOOL 类型来表示YES、NO,注意不是TRUE、FALSE。BOOL 使用了一个8 位(一个字节)的整数进行
表示,8 位全0 就是NO。
我们知道C 语言中非0 值即为逻辑真,因此常常会有int i=5;while(i){… …}的写法。在
Objective-C 中一定要注意慎用C 语言中的这种数字与逻辑真假混合对待的做法去操作BOOL
类型变量。例如:
BOOL bi=8960;
if(bi==YES){
printf("YES");
}
这里会输出YES 吗?不会的。为什么呢?8960 是非0 值,它不是逻辑真吗?还记得上面说
过BOOL 是一个8 位的整数吗?因为 8960 用二进制表示是大于8 位的,也就是说高位无效,
只保留8960 的低八位,8960 的低八位恰好全都是0,因此bi 就是NO 了。因此在Objective-C
中一定要注意这个问题,非零值未必是BOOL 的YES,但是0 一定是NO。
所以有C 语言编程经验的,最好不要把BOOL 与整数掺合在一起作为布尔类型的判断,可能
C 语言的开发者认为直接用数字作为布尔值进行判断在写法上更为简洁。
0 0
- OC中使用布尔类型的注意事项
- 【OC语言基础】之布尔类型的使用
- 布尔类型的使用
- OC中类的使用注意事项
- JavaBean中布尔类型使用注意
- MySQL中如何使用布尔类型
- JavaBean中布尔类型使用注意
- VC中使用string类型的注意事项
- OC中分类的注意事项
- OC中引用的注意事项
- C++中布尔类型
- Python中布尔类型
- Python中布尔类型
- Python中布尔类型
- Python中布尔类型
- C++中布尔类型
- Java中布尔类型操作&=,|=与^=的使用
- Java中布尔类型操作 &=,|=与^= 的使用
- 爱勾搭技术沙龙第一期 ——互联网中高端技术从业者如何突破职业瓶颈
- 图算法:2、计算带有负权值的单源最短路径:Bellman-Ford算法
- oracle 11g中sql plus使用
- 前端2
- Android 5.0后图片报错:libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
- OC中使用布尔类型的注意事项
- Codeforces Round #333 (Div. 2)A. Two Bases(模拟,计算进制)
- GCD高级用法:分派源与信号量 7个 Demo
- UITableViewCell中的使用cell和cell.contentView的区别
- 简单算法之费式数列
- android的binder机制(C++)
- 基本的ARC使用规则
- linux video 编程 h264 YUYV
- Java基础之线程