---------------
main.m
---------------
#import
<Foundation/Foundation.h>
BOOL
judge(
int
a ,
int
b)
{
if (a > b)
{
return YES ;
}
return NO ;
}
int main()
{
int a = 20 ;
if (a > b)
{
return YES ;
}
return NO ;
}
int main()
{
int a = 20 ;
int
b =
5
;
NSLog(@"a是否大于b:%d", judge(a , b));
BOOL
b1 =
1
;
BOOL
b2 =
18
;
NSLog
(
@"b1
的值为:
%d"
, b1);
NSLog(@"b2的值为:%d", b2);
BOOL
c =
256
;
NSLog(@"bo1:
%d", bo1);
}
一、编写本节代码的具体步骤:
1.参照003节的代码编写步骤。
二、本节代码涉及到的知识点:
1.
BOOL类型有YES和NO两个值,分别代表真和假。
注意:在底层代码中,OC实际上是用signed char来代表BOOL,而YES和NO两个值的本质是1和0。
2.在上面的示例代码中,c的值被设为256,而256在底层被转换成二进制数100000000。
然后当这个二进制数赋值给BOOL类型的变量时,仅能保存后8位,即00000000,所以最后输出为0。
因此,千万不要以为非零整数赋值给BOOL类型的变量,就一定会得到YES。
3.注意bool与BOOL两者之间的区别
bool是标准C++中的布尔量,占一个字节大小内存。
BOOL
是用signed char来代表真假值,本质上还是一个8位二进制数(占一个字节)。
编译器也不会把它当做
真正布尔类型来处理,而是取其后8位的比特值。
bool取值false和true,是0和1的区别。
BOOL取值FALSE和TRUE,是0和非0的区别。
4.OC会把任意非0且非空的值当做真处理,因此,很多时候我们并不需要去专门设定一个BOOL值。
这样也避免了出现上面提到的漏洞。