你已经遇到过Objective-C的基本数据类型int。回顾一下,声明为int类型的变量只能用于保存整型值,也就是不包含小数位数的值。
Objective-C还提供了另外3种基本数据类型:float、double和char。声明为float类型的变量可以存储浮点数(即包含小数位数的值)。double类型和float类型一样,通常,前者表示的范围大约是后者的两倍。char数据类型可存储单个字符,例如字母a、数字字符6或者一个分号(后面将详细讨论有关内容)。
在Objective-C中,任何数字、单个字符或者字符串通常都称为常量。例如,数字58表示一个常量整数值,字符串@"Programming in Objective-C is fun."表示一个常量字符串对象。完全由常量值组成的表达式叫做常量表达式。因此,下面的表达式是一个常量表达式,因为该表达式的每一项都是常量值:
128 + 7 - 17
然而,如果将i声明为整型变量,那么表达式就不是一个常量表达式:
128 + 7 – i
int类型
整数常量由一个或多个数字的序列组成。序列前的负号表示该值是一个负数。值158、-10和0都是合法的整数常量。数字中间不允许插入空格,并且不能使用逗号(因此,12,000是一个非法的整数常量,它必须写成12000)。
每个值无论是字符、整数还是浮点数字,都有与其对应的值域。这个值域与系统为特定类型的值分配的内存量有关。一般来说,在语言中没有规定这个量,它通常依赖于所运行的计算机,因此,叫做设备或机器相关量。例如,一个整数可在计算机上占用32位,或者可以使用64位存储。如果使用64位存储,整型变量将能够存储比32位更大的数值。
注意
在Mac OS X中,提供了选择应用程序是在32位还是64位下编译。在前一种情况下,一个int占用32位;在后一种情况下,一个int占用64位。
float类型
声明为float类型的变量可以存储包含小数位的值。要区分浮点常量,可以看它是否包含小数点。值3.、125.8及-.0001都是合法的浮点常量。要显示浮点值,可用NSLog转换字符%f或者%g。
浮点常量也能用所谓的科学计数法来表示。值1.7e4就是使用这种计数法来表示的浮点值,它表示值1.7×104。
如上所述,double类型与float类型非常相似,只是double类型的变量可存储的范围大概是float变量的两倍。
char类型
char变量可存储单个字符。将字符放入一对单引号中就能得到字符常量。因此,'a'、';'和'0'都是合法的字符常量。第一个常量表示字母a,第二个表示分号,第三个表示字符0,它并不等同于数字0。不要把字符常量和C语言风格的字符串混为一谈,字符常量是放在单引号中的单个字符,而字符串则是放在双引号中的任意个数的字符。正如在第3章提及的,前面有@字符并且放在双引号中的字符串是NSString字符串对象。
字符常量'\n'(即换行符)是一个合法的字符常量,尽管它似乎与前面提到的规则矛盾。这是因为反斜杠符号被认为是特殊符号。换句话说,Objective-C编译器将字符'\n'看做单个字符,尽管它实际上由两个字符组成。其他特殊字符也是以反斜杠字符开头的。在NSLog调用中可以使用格式字符%c,以便显示char变量的值。
在代码清单4-1中,使用了基本的Objective-C数据类型。
#import <Foundation/Foundation.h>
int main (int argc, char *argv[])
{
@autoreleasepool {
int integerVar = 100;
float floatingVar = 331.79;
double doubleVar = 8.44e+11;
char charVar = 'W';
NSLog (@"integerVar = %i", integerVar);
NSLog (@"floatingVar = %f", floatingVar);
NSLog (@"doubleVar = %e", doubleVar);
NSLog (@"doubleVar = %g", doubleVar);
NSLog (@"charVar = %c", charVar);
}
return 0;
}
integerVar = 100
floatingVar = 331.790009
doubleVar = 8.440000e+11
doubleVar = 8.44e+11
charVar = W
在程序输出的第二行,你会注意到指定给floatingVar的值331.79,实际显示成了331.790009。事实上,实际显示的值是由具体使用的计算机系统决定的。出现这种不准确值的原因在于,计算机内部使用了特殊的方式表示数字。使用计算器处理数字时,很可能遇到相同的不准确性。如果用计算器计算1除以3,将得到结果.33333333,很可能结尾带有一些附加的3。这一串3是计算器计算1/3的近似值。理论上,应该存在无限个3。然而该计算器只能保存这些位的数字,这就是计算机的不确定性。同样的不确定性也出现在这里:在计算机内存中不能精确地表示一些浮点值。
限定词:long、long long、short、unsigned及signed
如果直接把限定词long放在int声明之前,那么所声明的整型变量在某些计算机上具有扩展的值域。一个long int声明的例子为:
long int factorial;
这条语句将变量fractorial声明为long的整型变量。就像float和double变量一样,long变量的具体范围也是由具体的计算机系统决定的。
要用NSLog显示long int的值,就要使用字母l作为修饰符,放在整型格式符号之前。这意味着格式符号%li将用十进制格式显示long int的值。
你也可以使用long long int变量,甚至是具有更大范围带有浮点数的long double变量。
把限定词short放在int声明之前时,它告诉Objective-C编译器要声明的特定变量用来存储相当小的整数。之所以使用short变量,主要原因是对节约内存空间的考虑,当程序员需要大量内存而可用的内存量又十分有限时,就可用short变量来解决这个问题。
最后一个可以放在int变量之前的限定词,是在整数变量只用来存储正数的情况下使用的。以下语句
unsigned int counter;
向编译器声明,变量counter只用于保存正值。通过限制整型变量的使用,让它专门用于存储正整数,可以扩展整型变量的范围。
id类型
id数据类型可存储任何类型的对象。从某种意义说,它是一般对象类型。例如,程序行
id graphicObject;
将graphicObject声明为id类型的变量。可声明方法使其具有id类型的返回值,如下:
-(id) newObject: (int) type;
这个程序行声明了一个名为newObject的实例方法,它具有名为type的单个整型参数并有id类型的返回值。
id类型是本书经常使用的一种重要的数据类型。这里介绍该类型的目的是为了保持本书的完整性。id类型是Objective-C中十分重要的特性,它是多态和动态绑定的基础,这两个特性将在第9章“多态、动态类型和动态绑定”中详细讨论。
表4.1总结了基本数据类型和限定词。
表4.1 基础数据类型
类 型
|
实 例
|
NSLog字符
|
char
|
'a'、'\n'
|
%c
|
short int
|
—
|
%hi、%hx、%ho
|
unsigned short int
|
—
|
%hu、%hx、%ho %hu、%hx、%ho
|
int
|
12、-97、0xFFE0、0177
|
%i、%x、%o
|
unsigned int
|
12u、100U、0XFFu
|
%u、%x、%o
|
long int
|
12L、-2001、0xffffL
|
%li、%lx、%lo
|
unsigned long int
|
12UL、100ul、0xffeeUL
|
%lu、%lx、%lo
|
long long int
|
0xe5e5e5e5LL、500ll
|
%lli、%llx、&llo
|
unsigned long long int
|
12ull、0xffeeULL
|
%llu、%llx、%llo
|
float
|
12.34f、3.1e-5f、0x1.5p10、0x1P-1
|
%f、%e、%g、%a
|
double
|
12.34、3.1e-5、0x.1p3
|
%f、%e、%g、%a
|
long double
|
12.34L、3.1e-5l
|
%Lf、$Le、%Lg
|
id
|
nil
|
%p
|
注意
在表4.1中,在整型常量中以0开头表示常量是八进制(基数8)的,以0x开头或(0X)表示它是十六进制(基数16)的,数字0x.1p3表示十六进制浮点常量。不必担心这些格式,这里只是为了使表格完整进行的总结。此外,前缀f、l(L)、u(U)和ll(LL)用来明确表示常量是float、long、unsigned和long long类型。
本文节选自《Objective-C 程序设计(第4版)》
![点击图片可在新窗口打开](http://img.my.csdn.net/uploads/201211/06/1352166611_5913.jpg)
电子工业出版社出版
[美]Stephen G. Kochan(斯蒂芬·G·科昌)著
林冀 范俊 朱奕欣译
分享到:
相关推荐
- **数值常量**:数值常量包括整型常量和浮点型常量。整型常量可以是十进制、八进制(前缀0)或十六进制(前缀0x)。浮点型常量可以是十进制或科学计数法。在整型常量后添加'l'或'L'表示长整型常量,如`123L`。无...
第三次课:Python程序设计——语法基础——数据类型和常量变量.ipynb
在Windows编程中,数据类型和常量扮演着至关重要的角色,它们定义了程序中变量、函数参数和返回值的类型,确保了代码的正确性和兼容性。以下是对给定文件中提到的一些关键Windows数据类型和常量的详细解释: 1. **...
在Windows编程中,数据类型和常量扮演着至关重要的角色,它们定义了程序中变量、参数和函数返回值的类型,确保了代码的正确性和兼容性。以下是对这些数据类型的详细解释: 1. **BOOL**: 表示布尔类型,通常等同于C/...
常量有多种类型,如整型常量、浮点型常量、字符常量和字符串常量。 然后是**变量**,它是存储数据的容器。变量的创建需要指定数据类型,并且可以在程序运行过程中改变其值。变量名遵循一定的命名规则,例如首字母不...
C语言数据类型和常量 C语言是一种功能强大且广泛使用的程序设计语言,在计算机程序设计中占据着重要的地位。了解C语言的数据类型和常量是学习C语言的基础。 C语言的数据类型可以分为两大类:基本类型和构造类型。...
Java语言中的常量是指在程序中不能被改变的值,包括整型常量、实型常量、字符常量、逻辑常量和字符串常量等。 本PPT教案涵盖了Java语言中的标识符、关键字、变量、数据类型和常量等知识点,是Java语言的基础知识。
在"1.3 基本数据类型、常量和变量1"这个章节中,我们主要会探讨Python中的基本数据类型、常量以及变量的概念。 1. 基本数据类型: - 整型(Integer):Python中的整型数据可以是任意大小,没有限制,比如10、-20等...
为语言间互操作性提供基本框架的通用类型系统(CTS)的层次结构 值类型、引用类型及其差异 ...预定义基本数据类型的使用 类型转换方法:隐式转换、显式转换(强制转换)和Convert类提供的类型转换方法
算术运算符包括+、-、*、/、%(取模),用于组合常量和变量进行数学计算。 4.5 类型:_Bool、_Complex和_Imaginary Objective-C还支持布尔类型_Bool,复数类型_Complex和虚数类型_Imaginary,分别用于逻辑运算、...
【知识点详解】 在编程语言中,数据类型是基础概念之一,它们定义了程序中变量能够存储的数据种类。在C语言中,数据类型分为基本数据类型、...在实际编程中,正确使用数据类型和常量能够提高代码的清晰度和可靠性。
常量是编程中不可修改的值,C++中的常量可以根据数据类型划分为逻辑常量、整型常量、浮点型常量、字符型常量和字符串常量。逻辑常量true和false在内存中分别表示1和0,常用于逻辑运算。整型常量可以以十进制、八进制...
数据类型是编程语言中至关重要的概念...总的来说,数据类型、变量、常量和运算符是编程的基本元素,它们共同构成了程序的逻辑结构,允许我们处理、存储和操作数据。理解这些概念对于编写有效的C#或VB.NET代码至关重要。
在这个PPT课件中,主要讲解了C++中的数据类型和常量,这些概念对于理解C语言的程序设计至关重要。 首先,C++的数据类型决定了变量在内存中占用的字节数、可能的取值范围以及可以对其进行的操作。基本数据类型包括...
常量在IDL中用于表示不变的数值,如数值常量、字符串常量和空值常量。例如,你可以声明一个浮点型常量`my_float = 3.14`。 【变量与数据转换】 在IDL中,变量可以在任何时候创建和重新定义其类型、大小和值,这是它...
第三章-数据类型常量变量及表达式优秀文档.ppt是VB编程语言的第三章,介绍了VB语言的基本概念,包括数据类型、常量、变量和表达式的定义和使用。 数据类型是指计算机中存储和处理数据的方式。VB支持多种数据类型,...
总之,理解并熟练运用数据类型和常量在Windows编程中至关重要,这不仅涉及到数据的正确存储和处理,还直接影响到程序的性能和可维护性。正确地选择和使用数据类型,能确保代码的高效运行,同时避免潜在的溢出或精度...
第三章数据类型常量变量及表达式是VB语言编程的基础知识,本章内容主要包括VB语言字符集及编码规则、数据类型、常量、变量、运算符和表达式的使用等。 VB语言字符集及编码规则 VB语言字符集包括字母、数字和专用...
了解和熟练掌握C++的基本数据类型、类型修饰符、常量和运算符是编程的基础,对于编写出高效、准确的代码至关重要。在实际编程中,我们需要根据需求选择合适的数据类型,合理使用类型修饰符,确保数据的正确表示,...