数据类型和常量


 

 

    --------数据类型和常量--------

在Objective-C中,任何数字,单个字符或者字符串通常都称为常量。例如,数字58表示一个整型常量值。字符串@"Hello World."表示一个常量字符串对象。表达式 @5 表示一个常量数字对象。

每个值无论是字符、整数还是浮点数字,都有与其对应的值域。这个值域与系统为特定类型的值分配的内存量有关。一般来说,在语言中没有规定这个量,他通常依赖于所运行的计算机,因此,叫做设备和机器相关量。例如,一个整数可在计算机上占用32位,或者64位存储。如果使用64位存储,整型变量将会存储比64为更大的数值。

  •  int  :
    1.   int类型变量只能用于保存整型值,也就是不包含小数位数的值。
    2. 整数常量有一个或多个数字的序列组成。序列前的正号/负号表示该值是一个正数/负数。
    3. 数字中间不允许插入空格,并且不能使用逗号。
  • float  :
    1.   float类型的变量可以存储浮点数,也就是包含小数位数的值。
    2. 浮点常量也能用所谓的科学计数法来表示。值 1.7e4  表示   1.7 x 104
  • double :
    1. double类型和float类型一样,通常,double类型的变量可存储的范围大概是float类型的两倍。 

 

  • char  :
    1. char数据类型可存储单个字符,将字符串放入一对单引号中就能得到字符常量。因此, 'a'  、 ';'  和 '0' 都是合法的字符常量。第一个表示字母 a,第二个表示分号,第三个表示字符0,他不等同于数字0。
    2. 字符常量是放在单引号中的单个字符,而字符串则是放在双引号中的任意个数字符。前面有@字符并且放在双引号中的字符串是NSString字符串对象。
    3. 字符常量 '\n' (即换行符) 是一个特殊的但是合法的字符常量,编译器是将字符 '\n'  看做是单个字符的。其他特殊字符也是一反斜杠字符开头的。

 

限定词  :  long  、 long long  、short 、unsigned 及 signed 

  1. long   :   如果直接把限定词 long 放在 int 声明之前,那么所声明的整型变量在某些计算机上具有拓展的值域(即能保存更大的数值)。 long 变量的具体范围也是由具体的计算机系统决定的。
  2. short  :  把限定词 short  放在 int 声明之前,它将告诉 OC 编译器要声明的特定变量用来存储相当小的整数。之所以使用 short 变量 ,主要是对于节约内存空间的考虑。
  3. unsigned  : unsigned 是在整数变量只用来存储正整数的时候来使用的。

 

 

 

 

 

 

枚举数据类型:

  • Objective - C 编译器实际上将枚举类型当做整型常量来处理。不参加内存的占用和释放 枚举定义变量即可直接使用,不用初始化.
  • 枚举数据类型的定义以关键字 enum 开头,之后是枚举数据类型的名称,然后是标识符序列(包含在一对大括号内),定义了所有允许给这个类型指派的值。(例: enum  flag {false  , true}; )
  • 定义枚举数据类型时,也允许有所变化:可以省略数据类型的名称,定义类型可以将变量声明为特定枚举数据类型中的一个。(例:  enum  { value1 , value2 , value3  }Identifier;  )   。定义了一个未命名的枚举数据类型。

 

typedef 语句:

  • 通过 typedef 语句, Objective - C 编译器允许编程者为数据类型另外指派一个名称。(例:  typedef   int  Counter ;   定义名称 Counter 等价于 Objective-C 数据类型 int。 在随后的变量就可以声明成  Counter 类型,效果会与 int 类型相等)

 

typedef 与 枚举 结合:

typedef enum {

//以下是枚举成员
TestA = 0,

TestB, TestC, TestD }Test;
//枚举名称 亦可以如下定义(推荐:结构比较清晰): typedef NS_ENUM(NSInteger, Test1) { //以下是枚举成员 Test1A = 0, Test1B = 1, Test1C = 2, Test1D = 3 }; 枚举的定义还支持位运算的方式定义,如下: 等于号后面必须等于1 typedef NS_ENUM(NSInteger, Test) { TestA = 1, //1 1 1 TestB = 1 << 1, //2 2 10 转换成 10进制 2 TestC = 1 << 2, //4 3 100 转换成 10进制 4 TestD = 1 << 3, //8 4 1000 转换成 10进制 8 TestE = 1 << 4 //16 5 10000 转换成 10进制 16 };

 

 

posted @ 2016-09-11 22:38  方晶晶  阅读(1491)  评论(0编辑  收藏  举报