`

数据类型和常量

阅读更多

你已经遇到过Objective-C的基本数据类型int。回顾一下,声明为int类型的变量只能用于保存整型值,也就是不包含小数位数的值。

Objective-C还提供了另外3种基本数据类型:floatdoublechar。声明为float类型的变量可以存储浮点数(即包含小数位数的值)。double类型和float类型一样,通常,前者表示的范围大约是后者的两倍。char数据类型可存储单个字符,例如字母a、数字字符6或者一个分号(后面将详细讨论有关内容)。

Objective-C中,任何数字、单个字符或者字符串通常都称为常量。例如,数字58表示一个常量整数值,字符串@"Programming in Objective-C is fun."表示一个常量字符串对象。完全由常量值组成的表达式叫做常量表达式。因此,下面的表达式是一个常量表达式,因为该表达式的每一项都是常量值:

128 + 7 - 17

然而,如果将i声明为整型变量,那么表达式就不是一个常量表达式:

128 + 7 – i

int类型

整数常量由一个或多个数字的序列组成。序列前的负号表示该值是一个负数。值158-100都是合法的整数常量。数字中间不允许插入空格,并且不能使用逗号(因此,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数据类型。

代码清单4-1

#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;

}

 

代码清单4-1  输出

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。然而该计算器只能保存这些位的数字,这就是计算机的不确定性。同样的不确定性也出现在这里:在计算机内存中不能精确地表示一些浮点值。

限定词:longlong longshortunsignedsigned

如果直接把限定词long放在int声明之前,那么所声明的整型变量在某些计算机上具有扩展的值域。一个long int声明的例子为:

long int factorial;

这条语句将变量fractorial声明为long的整型变量。就像floatdouble变量一样,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-970xFFE00177

%i%x%o

unsigned int

12u100U0XFFu

%u%x%o

long int

12L-20010xffffL

%li%lx%lo

unsigned long int

12UL100ul0xffeeUL

%lu%lx%lo

long long int

0xe5e5e5e5LL500ll

%lli%llx&llo

unsigned long long int

12ull0xffeeULL

%llu%llx%llo

float

12.34f3.1e-5f0x1.5p100x1P-1

%f%e%g%a

double

12.343.1e-50x.1p3

%f%e%g%a

long double

12.34L3.1e-5l

%Lf$Le%Lg

id

nil

%p

 

注意

在表4.1中,在整型常量中以0开头表示常量是八进制(基数8)的,以0x开头或(0X)表示它是十六进制(基数16)的,数字0x.1p3表示十六进制浮点常量。不必担心这些格式,这里只是为了使表格完整进行的总结。此外,前缀fl(L)u(U)ll(LL)用来明确表示常量是floatlongunsignedlong long类型。

 

本文节选自《Objective-C 程序设计(4)

电子工业出版社出版

[]Stephen G. Kochan(斯蒂芬·G·科昌)著

林冀  范俊 朱奕欣译

 

分享到:
评论

相关推荐

    C++编程中的数据类型和常量学习教程

    - **数值常量**:数值常量包括整型常量和浮点型常量。整型常量可以是十进制、八进制(前缀0)或十六进制(前缀0x)。浮点型常量可以是十进制或科学计数法。在整型常量后添加'l'或'L'表示长整型常量,如`123L`。无...

    第三次课:Python程序设计——语法基础——数据类型和常量变量.ipynb

    第三次课:Python程序设计——语法基础——数据类型和常量变量.ipynb

    Windows数据类型及其常量[参照].pdf

    在Windows编程中,数据类型和常量扮演着至关重要的角色,它们定义了程序中变量、函数参数和返回值的类型,确保了代码的正确性和兼容性。以下是对给定文件中提到的一些关键Windows数据类型和常量的详细解释: 1. **...

    Windows数据类型及其常量.pdf

    在Windows编程中,数据类型和常量扮演着至关重要的角色,它们定义了程序中变量、参数和函数返回值的类型,确保了代码的正确性和兼容性。以下是对这些数据类型的详细解释: 1. **BOOL**: 表示布尔类型,通常等同于C/...

    数据类型,常量,变量及运算符

    常量有多种类型,如整型常量、浮点型常量、字符常量和字符串常量。 然后是**变量**,它是存储数据的容器。变量的创建需要指定数据类型,并且可以在程序运行过程中改变其值。变量名遵循一定的命名规则,例如首字母不...

    C语言课件-数据类型-5250.pptx

    C语言数据类型和常量 C语言是一种功能强大且广泛使用的程序设计语言,在计算机程序设计中占据着重要的地位。了解C语言的数据类型和常量是学习C语言的基础。 C语言的数据类型可以分为两大类:基本类型和构造类型。...

    JAVA标识符关键字和数据类型PPT教案学习.pptx

    Java语言中的常量是指在程序中不能被改变的值,包括整型常量、实型常量、字符常量、逻辑常量和字符串常量等。 本PPT教案涵盖了Java语言中的标识符、关键字、变量、数据类型和常量等知识点,是Java语言的基础知识。

    1.3 基本数据类型、常量和变量1

    在"1.3 基本数据类型、常量和变量1"这个章节中,我们主要会探讨Python中的基本数据类型、常量以及变量的概念。 1. 基本数据类型: - 整型(Integer):Python中的整型数据可以是任意大小,没有限制,比如10、-20等...

    第2章 数据类型、变量和常量

    为语言间互操作性提供基本框架的通用类型系统(CTS)的层次结构 值类型、引用类型及其差异 ...预定义基本数据类型的使用 类型转换方法:隐式转换、显式转换(强制转换)和Convert类提供的类型转换方法

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

    算术运算符包括+、-、*、/、%(取模),用于组合常量和变量进行数学计算。 4.5 类型:_Bool、_Complex和_Imaginary Objective-C还支持布尔类型_Bool,复数类型_Complex和虚数类型_Imaginary,分别用于逻辑运算、...

    基本数据类型运算符和表达式PPT学习教案.pptx

    【知识点详解】 在编程语言中,数据类型是基础概念之一,它们定义了程序中变量能够存储的数据种类。在C语言中,数据类型分为基本数据类型、...在实际编程中,正确使用数据类型和常量能够提高代码的清晰度和可靠性。

    cpp基本数据类型运算符与表达式实用PPT课件.pptx

    常量是编程中不可修改的值,C++中的常量可以根据数据类型划分为逻辑常量、整型常量、浮点型常量、字符型常量和字符串常量。逻辑常量true和false在内存中分别表示1和0,常用于逻辑运算。整型常量可以以十进制、八进制...

    数据类型变量常量与运算符

    数据类型是编程语言中至关重要的概念...总的来说,数据类型、变量、常量和运算符是编程的基本元素,它们共同构成了程序的逻辑结构,允许我们处理、存储和操作数据。理解这些概念对于编写有效的C#或VB.NET代码至关重要。

    C数据类型与表达式实用PPT课件.pptx

    在这个PPT课件中,主要讲解了C++中的数据类型和常量,这些概念对于理解C语言的程序设计至关重要。 首先,C++的数据类型决定了变量在内存中占用的字节数、可能的取值范围以及可以对其进行的操作。基本数据类型包括...

    02A-IDL语法基础:IDL简介、数据类型、常量、变量及数据转换1

    常量在IDL中用于表示不变的数值,如数值常量、字符串常量和空值常量。例如,你可以声明一个浮点型常量`my_float = 3.14`。 【变量与数据转换】 在IDL中,变量可以在任何时候创建和重新定义其类型、大小和值,这是它...

    第三章-数据类型常量变量及表达式优秀文档.ppt

    第三章-数据类型常量变量及表达式优秀文档.ppt是VB编程语言的第三章,介绍了VB语言的基本概念,包括数据类型、常量、变量和表达式的定义和使用。 数据类型是指计算机中存储和处理数据的方式。VB支持多种数据类型,...

    计算机Windows数据类型.pdf

    总之,理解并熟练运用数据类型和常量在Windows编程中至关重要,这不仅涉及到数据的正确存储和处理,还直接影响到程序的性能和可维护性。正确地选择和使用数据类型,能确保代码的高效运行,同时避免潜在的溢出或精度...

    第三章数据类型常量变量及表达式e优秀文档.ppt

    第三章数据类型常量变量及表达式是VB语言编程的基础知识,本章内容主要包括VB语言字符集及编码规则、数据类型、常量、变量、运算符和表达式的使用等。 VB语言字符集及编码规则 VB语言字符集包括字母、数字和专用...

    cpp基本数据类型运算符与表达式实用PPT学习教案.pptx

    了解和熟练掌握C++的基本数据类型、类型修饰符、常量和运算符是编程的基础,对于编写出高效、准确的代码至关重要。在实际编程中,我们需要根据需求选择合适的数据类型,合理使用类型修饰符,确保数据的正确表示,...

Global site tag (gtag.js) - Google Analytics