学过许多的编程语言,无一例外都拥有Boolean类型,而objective C也不例外。
C语言中拥有布尔数据类型bool,它具有true值和false值。Objective C提供相似的类型Bool,它具有YES值和NO值。比较有趣的事情就是, Objective C的布尔类型比C语言的布尔类型早诞生10多年。这两种不同的布尔类型可以共同一个程序中共存,但在编写Cocoa代码时要使用Bool。
要注意的地方是:Objective C中的BOOL实际上是一种对带符号的字符串(singed char)类型的定义(typedef),它使用8位存储空间。YES定义为1,而NO定义为0(使用#define)。
由于Objective C并不将Bool作为仅能保存YES or NO值得真正的布尔类型来处理。编译器将BOOL认做8为二进制数,YES 和 NO值只是一种约定。这会引发一个小问题,不过不小心把一个长于1字节的整形复制给BOOL变量,那么只有低位作BOOL值。
来吧,接着来点干货,关于BOOL的使用功能例子;
#import <Foundation/Foundation.h> BOOL areIntDifferent(int thing1, int thing2){ if( thing1 == thing2){ return (NO); }else{ return (YES); } } NSSTRING *boolString(BOOL yesNo){ if(yesNo == NO){ return (@"NO"); }else{ return (@"YES"); } } int main(int argc, const char *argv[]){ BOOL areTheyDifferent; areTheyDifferent = areIntDifferent(5, 5); NSLog(@"are %d and %d different? %@", 5 , 5, boolString(areTheyDifferent); areTheyDifferent = areIntDifferent(23, 42); NSLog(@"are %d and %d different? %@", 23, 42, boolString(areTheyDifferent)); return (0); }
运行结果:
are 5 and 5 different ? NO are 23 and 24 different ? YES
需要注意的地方:
作为一个丰富经验的C语言开发者来说,往往将areIntsDifferent()函数简写为:
BOOL areIntDifferent(int thing1, int thing2){ return (thing1 - thing2); }
在C语言中非0的值都返回YES,但objective C中1是不等于YES的
还有一个问题%d我们固然比较熟悉,但“%@"它的含义是什么,它表示boolString()返回一个NSString的指针。
相关推荐
在第二章数据类型中,Objective-C提供了标准C语言的数据类型外,还引入了对象类型的引用。在Objective-C中,所有的对象变量都是指针类型,使用*符号来表示。id类型是Objective-C中一种特殊的数据类型,可以指向任何...
2.3 布尔类型10 2.3.1 BOOL强大的实用功能11 2.3.2 比较13 2.4 小结14 第3章 面向对象编程基础知识15 3.1 间接15 3.1.1 变量与间接16 3.1.2 使用文件名的间接18 3.2 在面向对象的编程中使用间接24 3.2.1 ...
在 Objective-C 中,布尔类型被命名为 `BOOL`,而不是 C 语言中的 `bool`。它在 `<objc/objc.h>` 头文件中定义。`BOOL` 类型是一个枚举类型,可以是 `YES` 或 `NO`,这两个常量都是 `BOOL` 类型的。`YES` 对应于非零...
3. Objective-C中的布尔类型 4. Objective-C中的null 5. 与C混合编写 6. 对象的初始化 7. Objective-C的description方法 8. Objective-C的异常处理 9. id类型 10. 类的继承 11. 动态判定与选择器 12. 类别Category ...
Objective-C中的控制结构与C语言基本一致,包括但不限于if语句、switch语句、循环等。 ##### 2.7 属性(Properties) 属性提供了一种简洁的方式来管理类的实例变量。通过属性,可以轻松地设置和获取类的成员变量。...
YES和NO是布尔常量,分别代表true和false,但Objective-C中的BOOL类型与C++不同,它将1定义为YES,0定义为NO。 数据类型 Objective-C的数据类型分为基本数据类型和引用数据类型。基本数据类型包括整型、浮点型、...
在Objective-C中,`BOOL`类型与C语言中的布尔类型有所不同。在Objective-C中,`1`代表`YES`(真),`0`代表`NO`(假)。例如: ```objective-c BOOL b = YES; // 等价于 b = 1; if (b == YES) { NSLog(@"b is true...
Objective-C中定义了一个`BOOL`类型,与C++中的布尔类型不同。在Objective-C中,`1`被宏定义为`YES`代表真,`0`被宏定义为`NO`代表假。 - **注意:** 不可以直接比较数值与`YES`/`NO`进行布尔判断,例如,下面的代码...
在Objective-C中,还包含了一些特殊的值,如nil、Nil、YES和NO,这些与C++中的NULL或布尔值true和false不完全相同,需要特别注意。Objective-C同样支持C++中的注释风格(// 和 /*...*/),但其变量声明位置较为灵活...
- **BOOL**:Objective-C中布尔类型的表示,有两种状态:YES或NO。 - **#import vs #include**:Objective-C推荐使用`#import`,它可以避免重复包含头文件的问题。 - **Method与Message**:在Objective-C中,方法...
5. **BOOL类型**:Objective-C引入了BOOL类型,用于表示布尔值,虽然在C语言中没有正式的布尔类型,但在Objective-C中,BOOL是一个明确的类型,用于处理真和假。 **Objective-C的发展与流行:** Objective-C在TIOBE...
Objective-C还支持布尔类型_Bool,复数类型_Complex和虚数类型_Imaginary,分别用于逻辑运算、复数计算和复数运算。 在学习Objective-C编程时,理解这些基础知识至关重要,因为它们构成了程序的基本构建块。掌握...
- **基本数据类型**:如上所述,Objective-C支持大多数C语言的数据类型,并且增加了如`BOOL`这样的布尔类型。 - **表达式与流程控制**:Objective-C中的表达式和流程控制语句(如`if`, `for`, `while`等)与C语言...
- **nil和NULL**:分别表示Objective-C和C语言中的空值。 - **Foundation框架数据结构**: - **NSNumber**:用于包装原始数据类型。 - **NSDecimalNumber**:用于处理十进制数值。 - **NSString**:用于表示不可...