许多语言都有布尔(Boolean)类型,当然这是个专用术语,指的是存储真值和假值的变量。Objective-C也不例外。
C语言拥有布尔数据类型bool,它具有true值和false值。Objective-C提供了相似的类型BOOL,它具有YES值和NO值。顺便提一下,Objective-C的BOOL类型比C语言的bool类型早诞生十多年。这两种不同的布尔类型可以在同一个程序中共存,但在便携Cocoa代码时要使用BOOL。
Objective-C中的BOOL实际上是一种对带符号的字符类型(signed char)的定义(typedef),它使用8位存储空间。YES定义为1,NO定义为0(使用#define)。
Objective-C并不讲BOOL作为仅能保存YES或NO值的真正的布尔类型来处理。编译器将BOOL认做8位二进制数,YES或NO只是一种约定,这引发一个小问题:如果不小心讲一个长于1字节的整型值(例如short或int值)赋给一个BOOL变量,那么只有低位字节会用作BOOL值,假设该低位字节刚好为0(例如8960,携程十六进制为0x2300),BOOL值将会是0,即NO值。
==================================================
数据类型和常量
整型int:表示方法:
十进制:格式符符号:%i(long:%Li)
八进制:首位为0,其后为0~7之间的数,格式符为:%o(long:%Lo)(不带0),%#o(带0)
十六进制:首位为:0x(大小皆可),其后为0~9、A~F(10~15)组合。格式符为:%x(无0x),%#x(带0x)
浮点float:转换字符:%f。1.7*104= 1.7e4,1.7*10-4=1.7e-4,E或e皆可。科学技术法格式符:%e。%g:允许NSLog确定使用常用的浮点计数法还是使用科学计数法来显示浮点。这一决定取决于指数的值:如果该值小于-4或大于5,采用%e(科学计数法)表示,否则采用%f(浮点计数法)。
双精度double:格式符号:%f(long:%Lf),%e(long:%Le),%g(long:%Lg)同float一致。范围是float两倍。
字符型char:例如:‘a’。前面有@字符并且放在双引号中的字符串是NSString字符串对象。
字符常量‘\n’(换行符)是一个合法的字符常量,因为反斜杠符号是Objectiv-C系统中的特殊符号,实际上并不把它看成一个字符。换句话说,Objective-C编译器将字符’\n’看作单个字符,尽管它实际上由两个字符组成。格式符号:%c。