`
wenrunchang123
  • 浏览: 251450 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Objective C中的布尔类型

 
阅读更多

         学过许多的编程语言,无一例外都拥有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培训教程

    在第二章数据类型中,Objective-C提供了标准C语言的数据类型外,还引入了对象类型的引用。在Objective-C中,所有的对象变量都是指针类型,使用*符号来表示。id类型是Objective-C中一种特殊的数据类型,可以指向任何...

    Objective-C基础教程 中文 PDF 清晰版 [31M]

    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 Boolean 变量

    在 Objective-C 中,布尔类型被命名为 `BOOL`,而不是 C 语言中的 `bool`。它在 `&lt;objc/objc.h&gt;` 头文件中定义。`BOOL` 类型是一个枚举类型,可以是 `YES` 或 `NO`,这两个常量都是 `BOOL` 类型的。`YES` 对应于非零...

    Objective-C的语法与Cocoa框架

    3. Objective-C中的布尔类型 4. Objective-C中的null 5. 与C混合编写 6. 对象的初始化 7. Objective-C的description方法 8. Objective-C的异常处理 9. id类型 10. 类的继承 11. 动态判定与选择器 12. 类别Category ...

    Object-C语言教程:Objective-C 简介

    Objective-C中的控制结构与C语言基本一致,包括但不限于if语句、switch语句、循环等。 ##### 2.7 属性(Properties) 属性提供了一种简洁的方式来管理类的实例变量。通过属性,可以轻松地设置和获取类的成员变量。...

    Objective-C培训资料.pdf

    YES和NO是布尔常量,分别代表true和false,但Objective-C中的BOOL类型与C++不同,它将1定义为YES,0定义为NO。 数据类型 Objective-C的数据类型分为基本数据类型和引用数据类型。基本数据类型包括整型、浮点型、...

    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培训资料

    Objective-C中定义了一个`BOOL`类型,与C++中的布尔类型不同。在Objective-C中,`1`被宏定义为`YES`代表真,`0`被宏定义为`NO`代表假。 - **注意:** 不可以直接比较数值与`YES`/`NO`进行布尔判断,例如,下面的代码...

    From C++ to Objective-C

    在Objective-C中,还包含了一些特殊的值,如nil、Nil、YES和NO,这些与C++中的NULL或布尔值true和false不完全相同,需要特别注意。Objective-C同样支持C++中的注释风格(// 和 /*...*/),但其变量声明位置较为灵活...

    objective-c 中文手册

    - **BOOL**:Objective-C中布尔类型的表示,有两种状态:YES或NO。 - **#import vs #include**:Objective-C推荐使用`#import`,它可以避免重复包含头文件的问题。 - **Method与Message**:在Objective-C中,方法...

    ios培训简介ObjectiveC语言培训课件.ppt

    5. **BOOL类型**:Objective-C引入了BOOL类型,用于表示布尔值,虽然在C语言中没有正式的布尔类型,但在Objective-C中,BOOL是一个明确的类型,用于处理真和假。 **Objective-C的发展与流行:** Objective-C在TIOBE...

    禅与Objective-C的编程艺术

    - **nil与BOOL检查**:介绍如何在Objective-C中处理空值(nil)以及布尔类型(BOOL),这是确保代码健壮性和可靠性的基础。 - **杂项技巧**:包括各种编程技巧和最佳实践,帮助开发者编写更加高效的代码。 - **运算符与...

    ObjectiveC程序设计数据类型和表达式PPT教案学习.pptx

    Objective-C还支持布尔类型_Bool,复数类型_Complex和虚数类型_Imaginary,分别用于逻辑运算、复数计算和复数运算。 在学习Objective-C编程时,理解这些基础知识至关重要,因为它们构成了程序的基本构建块。掌握...

    0基础iOS开发学习计划Objective-c语言内容概述.doc

    - **基本数据类型**:如上所述,Objective-C支持大多数C语言的数据类型,并且增加了如`BOOL`这样的布尔类型。 - **表达式与流程控制**:Objective-C中的表达式和流程控制语句(如`if`, `for`, `while`等)与C语言...

    Objective-C Succinctly.pdf

    - **nil和NULL**:分别表示Objective-C和C语言中的空值。 - **Foundation框架数据结构**: - **NSNumber**:用于包装原始数据类型。 - **NSDecimalNumber**:用于处理十进制数值。 - **NSString**:用于表示不可...

Global site tag (gtag.js) - Google Analytics