Objective-C数据类型可以分为:基本数据类型、对象类型和id类型

基本数据类型有:int、float、double和char类型。

对象类型就是类或协议所声明的指针类型,例如:SAutoreleasePool * pool,其中NSAutoreleasePool是一个类,NSAutoreleasePool *是它指针类型。

id类型可以表示任何类型,一般只是表示对象类型,不表示基本数据类型,所以刚才的变量pool也可以声明为id pool。int类型代表整数,它的十六进制表示方式:

0xFFED0D,在使用NSLog函数中格式化字符串使用%i表示十进制的整数,%o(字母o)表示8进制整数,%#x表示十六进制整数。它的取值范围是与设备相关

的,无法一概而论。NSLog(@"integerVar = %i", integerVar);

float类型代表单精度浮点数,要表示float类型浮点数,可以在数值后面加上f或F,例如:13.5f。float浮点数也可以用科学计数法表示,例如:1.7e4。NSLog函数中格式化字符串:%f表示浮点数,%e表示科学计数法,%g表示浮点数。NSLog(@“floatingVar = %f”, floatingVar);

double类型代表双精度浮点数,与float类型很相似,占用的字节空间double类型大体上是float类型的两倍。大多数计算机是用64位表示double类型。NSLog函数中格式化字符串,与float的%f、%e和 %g相同。NSLog(@"doubleVar = %e", doubleVar);

char类型代表字符类型,存放点个字符,用单引号引用起来。例如: 'A',如果要表示一些特殊字符,要使用转义字符“\”。NSLog(@"charVar = %c", charVar);

Obejctive-C中数据类型可以在int、float、double和char类型前面加上限定词,限定词有:long、long long、short、unsigned和signed,这些限定词从而增强了基本类型。

• long int,在大部分计算机中代表32位整数,在整数后面加L(或l)表示,例如:long int numberOfPoints =131071100L,NSLog函数中格式化字符串用%li表示;

• long long int可以指定更加宽泛的整数类型,保证变量至少64位宽度。NSLog函数中格式化字符串使用%lli表示;

• long double ,可以指定更加宽泛的double类型,要显示这个可以在尾部使用L(大小写)表示,1.234e+7L。NSLog函数中格式化字符串使用%Lf、%Le和%Lg表示;

• short int用来指定存放相对小的整数,一般是占用int类型的一半。大部分计算机是16位;

• unsigned int,告诉编译器只是接受正数,在数值之后放字母u(或U)表示,例如:0x00ffU;编写整数时候,可以将字母u(或U)和l(或L)组合起来,例如:20000UL;

• signed char,代表的字符与编译器有关,一般也作为无符合整数使用。

Objective-C还有两种数据类型是以int类型在计算机内部存储的,它们是:布尔类型和枚举类型

• 布尔类型是_Bool(别名BOOL),取值范围1或0,其中1可以用TRUE和YES表示,0可以用FALSE和NO表示。

• 枚举类型,如果需要定义一组相关常量,可以采用枚举类型,把这些常量定义成一个类型,例如游戏在上、下、左、右方向,可以枚举类型:

enum direction {up,down,left,right};
                   up  0开   down 1   类   1

#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool =
[[NSAutoreleasePool alloc] init];
enum week {
Mon, Tue, Wed, Thu, Fri, Sat, Sun
};
int days,aweek;
NSLog(@"Enter week number : ");
scanf("%i", &aweek);
... ...
[pool drain];
return ;
}

其中定义了week的枚举类型,函数scanf("%i", &aweek)是C中标准函数库,用于从终端读取键盘输入,%i是指定接收的类型,&aweek是传递aweek的地址给函数,便于接收键盘输入内容。&取表示地址符号

• 按照数据类型占用存储不同可以自动类型转换或强制类型转换,总的原则是小存储容量数据类型可以自动转换成为大存储容量数据类型。

• 不同类型数据间按照下面关系的从左到右(从低到高)自动转换:

• _Bool、char、short int、枚举类型 -> int ->long int->long long-> float -> double -> long double。

数据类型计算结果类型表

• 如果有下面的表示式,其中,f是float类型,i为int类型,l为long int 类型,s为short int类型,结果是什么类型?

• f * i + l /s

• 运行结果为float类型,这是因为f是float其它的操作数与float运算其结果就是float类型。

• 如果遵守类型转换是右到左情况,就需要强制类型转换了,强制类型转换语法形式上很简单,就是在数据前面加上(目标类型),但是这种转换是存在风险的,有可能造成数据的丢失,需要谨慎进行。例如:

常量与变量

• Objective-C中声明常量使用关键字const:

• const double PI = 3.141592654;

• Objective-C中变量可以分为成员变量、局部变量和全局变量。

int gCounter;//全局变量
@interface MyObject : NSObject {//相当于h头文件
int counter;//成员变量
}@end
@implementation MyObject //相当于m文件,定义都以@开始
-(void) print {
int cter = ;//局部变量
NSLog(@"%i", cter );
}@end

运算符和表达式

运算符可以分成如下几种:
• 算术运算符,+,―,*,/,%,++,――
• 关系运算符,>,<,>=,<=,==,!=
• 布尔逻辑运算符,!,&&,||
• 位运算符,&,|,^,~ ,>>,<<
• 赋值运算符,+=,―=,*=,/=
• 条件运算符,? :

布尔逻辑运算符中有两个比较特殊的运算符号,“&&”和“||”,其中“&&”为短路与,如果对两个表达式进行计算,若第1个表达式的值为“假”,则与第2个表达式的值无关,结果肯定为“假”,所以此时第2个表达式不再计算。“|| ”为短路或,如果对两个表达式进行计算,若第1个表达式的值为“真”,则与第2个表达式的值无关,结果肯定为“真”,所以此时第2个表达式不再计算。

int i = ;
int a = ;
int b = ;
if ((a > b) | (i++ == )) {
NSLog(@" a > b");
} else {
NSLog(@" a < b");
}
NSLog(@"i = %i", i);

位运算符有如下几个运算符:&,|,^,~ ,>>,<<,其中&是按位与,|是按位或,^是异或,~是取反,>>是右位移,<<是左位移。

• 假设有两个二进制数16位整数(short int),a=1001110110011101和b=0011100100111001,则有如下结果,它们的运行结果如下:

• 条件运算符的语法格式为:

• 条件运算符的语法格式为:

• 布尔表达式?返回值1:返回值2

当布尔表达式的值为真时,返回表达式1的值,否则返回表达式2的值。

int i = ;
int i3 =
NSString *res = i3 > ? @"及格" : @"不及格" ;
NSLog(@"res = i3 > 60 %@ ", res);

结果是“及格”

Objective-C代码的文件扩展名与数据类型的更多相关文章

  1. Objective-C代码的文件扩展名

  2. Microsoft Excel软件打开文件出现文件的格式与文件扩展名指定格式不一致?

    今天winform代码做一个datagridview数据导出功能,导出的excel文件的后缀是*.xls(Micorsoft Excel 2000), 而本机新建的excel文件的后缀是 *.xlsx ...

  3. 恢复 MSSQL bak 文件扩展名数据(上)

    恢复 MSSQL bak 文件扩展名数据 一.概念: Microsoft SQL Server是由美国微软公司所推出的关系数据库解决方案,最新的版本是SQL Server 2016,已经在2016年6 ...

  4. Visual C++文件扩展名解读

    VisualC++文件扩展名解读 [1] .APS:存储二进制资源的资源辅助中间文件(能否加快资源加载速度). [2] .BMP:位图资源文件. [3] .BSC:浏览信息文件.由浏览信息维护工具(B ...

  5. python预科前三天:计算器知识、Python下载和安装、Pycharm下载安装激活设置、解释型和编译型、git、思维导图、显示隐藏文件、隐藏已知文件扩展名、创建组织、创建项目、提交作业、排BUG技巧

    1.计算机组成结构:CPU.硬盘.内存.输入输出设备.主板.电源. 2.硬件之间的协作关系:是CPU运算完后给操作系统.专业术语叫指令. 3.键盘输入a之后发生的事情:键盘-CPU-操作系统-显卡-显 ...

  6. Linux文件系统简介一(磁盘分区、开机过程、目录结构、文件权限、文件扩展名、目录管理)

    Linux:就是一组软件,一套操作系统=核心+系统呼叫接口层. 1.操作系统 操作系统 = 核心(内核) + 系统呼叫(接口) 操作系统其实也是一组程序,重点在于管理计算机的所有活动以及驱动系统中的所 ...

  7. php文件扩展名判断

    <!DOCTYPE> <html> <head> <meta http-equiv="Content-type" content=&quo ...

  8. php查询文件扩展名

    //查询文件扩展名 function extension($str){ $str = implode("",explode("\\",$str)); $str ...

  9. ASP.net的文件扩展名

    尽管ASP.NET中采用的是事件响应模式,使程序开发人员和最终用户感觉与WinForm程序非常接近,但是它毕竟还是Web应用程序.而Web应用程序的特点,就是基于浏览器与服务器的请求与响应的执行方式. ...

随机推荐

  1. TortoiseGit 的使用

    日常用法 (1) 创建新库 在文件夹中按右键, 选择Git Create repository here 就可以创建库了. 在出现的窗口中, 不勾选选项, 直接按OK 在目录中就会出现一个名为.git ...

  2. Ext.widget()作用是使用别名创建对象。

    Ext.widget()作用是使用别名创建对象.使用已经的定义的组件的别名创建这个对象

  3. Android 一个漂亮的Android日期和时间选择器:DateTimePicker

    DateTimePicker这个类库包含了漂亮的 DatePicker 和 TimePicker ,类似于在新 Google Agenda App中看到的. 项目主页:http://www.open- ...

  4. REST Security with JWT using Java and Spring Security

    Security Security is the enemy of convenience, and vice versa. This statement is true for any system ...

  5. Apache, Nginx获得nginx代理后的真实用户Ip

    Nginx 的反向代理设置  proxy_set_header X-Real-IP $remote_addr; apache可以设置日志格式将 %h替换为 %{X-Real-Ip}i 如: LogFo ...

  6. javascript中argument1 === void 0的意思

    今天看代码时看到 if (argument1 === void 0 || typeof argument1 === 'object') { 啥意思? 概述 void 运算符会对它的操作数表达式进行求值 ...

  7. Java基础之处理事件——选项按钮的鼠标监听器(Lottery 2 with mouse listener)

    控制台程序. 定义监听器类有许多方式.下面把监听器类定义为单独的类MouseHandler: // Mouse event handler for a selection button import ...

  8. c++ DISALLOW_COPY_AND_ASSIGN

    Google C++编程规范 – 第三十二条 -<拷贝构造函数> [规范] 仅在确认需要的时候,才定义拷贝构造函数和赋值运算符:否则,请使用DISALLOW_COPY_AND_ASSIGN ...

  9. 一个想了好几天的问题——关于8086cpu自己编写9号中断不能单步的问题

           在<汇编语言>第十五章中我们可能遇到这样的问题:程序运行正确,但是debug单步调试,却无法运行,修改int 9h中断例程入口地址的指令,虚拟模式下,debug提示指令无效, ...

  10. Swift游戏实战-跑酷熊猫 06 创建平台类以及平台工厂类

    这节内容我们一起学习下随机长度的踩踏平台的原理是怎么样的. 要点: 平台类 我们的平台类继承于SKNode,这样就能被添加进其它节点进而显示在场景中. 它有一个方法来创建平台,这个方法接收一个包含SK ...