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. MFC之常用控件(四)

    常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控件.列表控件.树形控件和进度条控件等等.本节教程先来讲解静态文本框的使用. 控件的通知消息 在将静态文本框的使用之 ...

  2. Nginx反向代理的模拟

    CentOS起两台tomcat,端口分别是8080和8081! 1. nginx配置文件:nginx.conf upstream tomcats{ server 192.168.198.128:808 ...

  3. LeetCode Find Peak Element

    原题链接在这里:https://leetcode.com/problems/find-peak-element/ 题目: A peak element is an element that is gr ...

  4. 常用公共的css的样式

    html{-webkit-text-size-adjust:none; /*解决chrome浏览器下字体不能小于12px*/} body{overflow-x: hidden; font-size:1 ...

  5. POJ 1528问题描述

    Description From the article Number Theory in the 1994 Microsoft Encarta: ``If a, b, c are integers ...

  6. 为什么玩VR眼镜会头晕?

    为什么玩VR眼镜会头晕?看完本文你就懂了   很多用户都体验过各式各样的VR眼镜或者说头盔,但是不管哪一款,都很容易出现头晕的情况.相信大家都纳闷过,为什么玩VR眼镜会头晕?实际上这是和设备本身的技术 ...

  7. jenkins邮件模板

    步骤 1.在jenkins主目录中新建一个模板文件夹 命名为:email-templates 3.把模板代码放入到模板文件夹  with_results.groovy 4.设置邮件发送模板配置 5.配 ...

  8. 关于mysql的错误 - no query specified

    Mysql----error:no query specified mysql下抛出错误:error:no query specified出现此错误是sql不合法原因:如:select * from ...

  9. Java 线程池的介绍以及工作原理

    在什么情况下使用线程池? 1.单个任务处理的时间比较短 2.将需处理的任务的数量大 使用线程池的好处: 1. 降低资源消耗: 通过重复利用已创建的线程降低线程创建和销毁造成的消耗.2. 提高响应速度: ...

  10. 第三篇 SQL Server代理警报和操作员

    本篇文章是SQL Server代理系列的第三篇,详细内容请参考原文. 正如这一系列的上一篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行,除了步骤中执行的工 ...