博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective-C中的布尔类型的用法
阅读量:4109 次
发布时间:2019-05-25

本文共 723 字,大约阅读时间需要 2 分钟。

总结:在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 语言的开发者认为直接用数字作为布尔值进行判断在写法上更为简洁。

最关键的区别是:

C语言的bool类型虽然占1个字节,但无论给这个类型的变量赋任何非0整数值,其值都是1,他不是其他整数类型的别名

Objective-C中的布尔类型是一个8 位(一个字节)的整数进行表示的

转载地址:http://kpvsi.baihongyu.com/

你可能感兴趣的文章
vue-cli3和ts建立vue项目
查看>>
设计模式
查看>>
php基础教程-输出Hello World
查看>>
RAID LVM ISCSI
查看>>
mysql报错
查看>>
Android Studio Gradle project refresh failed No such property classpath for class
查看>>
Galera Cluster——一种新型的高一致性MySQL集群架构
查看>>
数学图形(1.44)超圆
查看>>
html5 canvas路径绘制2
查看>>
css左侧固定宽度,右侧自适应的几种实现方法
查看>>
sql server 游标使用
查看>>
解决导入TensorFlow后出现警告的的问题解决:通过降低numpy的版本
查看>>
HDU 2141 Can you find it?(二分)
查看>>
python中的数据结构
查看>>
第一天进入博客这个神奇的领域 在此%%%erosun
查看>>
新手对Spring的图解和一点个人理解
查看>>
Mac OS 10.6.5上如何默认启动mysq服务
查看>>
IC设计流程
查看>>
Linux下的redis安装和发布订阅
查看>>
实现刮刮乐的效果
查看>>