当前位置: 首页 > news >正文

Objective-C语法之基本数据类型

本篇博客主要介绍基本数据类型的长度,基本数据类型在Oc的数组中如何时候,还有其他数据类型的相互转换等。

为了演示基本数据类型的例子,我们新建一个iPhone项目类做例子

1、新建项目

为了方便,我们新建一个Single View Application 。



输入项目名称  BaseType



Product Name: 指产品名称 ,类似于项目名称。
Company Identifier: 公司标识符,一般命名规则为 “com.公司名”
Bundle Identifier: 指包标识符,用于唯一标识应用程序,默认会根据公司标识符和产品名来组合生成
Device Family: 指该应用支持的设备类型,共三个选项:iPhone、iPad、Universal(即iPhone、iPad通用)
Include Unite Tests: 是否包含单元测试代码模板,如果勾选,Xcode会帮助生成单元测试代码模板

在项目里找到,ViewController.m 为了方便演示,在界面启动时,我们加入测试代码


2 、C语言的基本数据类型长度

[cpp]  view plain copy
  1.        NSLog(@"The size of an int is: %lu bytes.",sizeof(int));  
  2. NSLog(@"The size of a short int is: %lu bytes.",sizeof(short int));  
  3. NSLog(@"The size of a long int is: %lu bytes.",sizeof(long int));  
  4. NSLog(@"The size of a char is: %lu bytes.",sizeof(char));  
  5. NSLog(@"The size of a float is: %lu bytes.",sizeof(float));  
  6. NSLog(@"The size of a double is: %lu bytes.",sizeof(double));  
  7. NSLog(@"The size of a bool is: %lu bytes.",sizeof(bool));   // Do any additional setup after loading the view,  
结果:

[cpp]  view plain copy
  1. 2012-06-13 13:55:46.726 BaseType[3032:f803] The size of an int is: 4 bytes.  
  2. 2012-06-13 13:55:46.726 BaseType[3032:f803] The size of a short int is: 2 bytes.  
  3. 2012-06-13 13:55:46.727 BaseType[3032:f803] The size of a long int is: 4 bytes.  
  4. 2012-06-13 13:55:46.731 BaseType[3032:f803] The size of a char is: 1 bytes.  
  5. 2012-06-13 13:55:46.732 BaseType[3032:f803] The size of a float is: 4 bytes.  
  6. 2012-06-13 13:55:46.733 BaseType[3032:f803] The size of a double is: 8 bytes.  
  7. 2012-06-13 13:55:46.733 BaseType[3032:f803] The size of a bool is: 1 bytes.  

3、格式化输出数据

[cpp]  view plain copy
  1. //整型  
  2.     int integerType = 5;  
  3.     //浮点型  
  4.     float floatType = 3.1415;  
  5.     //双浮点型  
  6.     double doubleType = 2.2033;  
  7.     //短整型  
  8.     short int shortType = 200;  
  9.     //长整型  
  10.     long long int longlongType = 7758123456767L;  
  11.     //c语言字符串  
  12.     char * cstring = "this is a string!";  
  13.       
  14.       
  15.     //整型  
  16.     NSLog(@"The value of integerType = %d",integerType);  
  17.     //浮点型  
  18.     NSLog(@"The value of floatType = %.2f",floatType);  
  19.     //双浮点型  
  20.     NSLog(@"The value of doubleType = %e",doubleType);  
  21.     //短整型  
  22.     NSLog(@"The value of shortType = %hi",shortType);  
  23.     //长整型  
  24.     NSLog(@"The value of longlongType = %lli",longlongType);  
  25.     //c语言字符串  
  26.     NSLog(@"The value of cstring = %s",cstring);  

结果:

[cpp]  view plain copy
  1. 2012-06-13 14:06:18.757 BaseType[3215:f803] The value of integerType = 5  
  2. 2012-06-13 14:06:18.757 BaseType[3215:f803] The value of floatType = 3.14  
  3. 2012-06-13 14:06:18.758 BaseType[3215:f803] The value of doubleType = 2.203300e+00  
  4. 2012-06-13 14:06:18.758 BaseType[3215:f803] The value of shortType = 200  
  5. 2012-06-13 14:06:18.758 BaseType[3215:f803] The value of longlongType = 7758123456767  
  6. 2012-06-13 14:06:18.758 BaseType[3215:f803] The value of cstring = this is a string!  

4、 int,NSInteger,NSUInteger,NSNumber 
1.当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。
2.NSUInteger是无符号的,即没有负数,NSInteger是有符号的。
3.有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?它们的功能当然是不同的。
 NSInteger是基础类型,但是NSNumber是一个类。如果想要在NSMutableArray里存储一个数值,直接用NSInteger是不行的,比如在一个NSMutableArray里面这样用:

[cpp]  view plain copy
  1. NSMutableArray *array = [[NSMutableArray alloc]init];  
  2.     [array addObject:[NSNumber numberWithInt:88]];  

 这样是会引发编译错误的,因为NSMutableArray里面放的需要是一个类,但‘88’不是类。

Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。
例如以下创建方法:
+ (NSNumber *) numberWithChar: (char) value;
+ (NSNumber *) numberWithInt: (int) value;
+ (NSNumber *) numberWithFloat: (float) value;
+ (NSNumber *) numberWithBool: (BOOL) value;

将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:
- (char) charValue;
- (int) intValue;
- (float) floatValue;
- (BOOL) boolValue;
- (NSString *) stringValue;

例子:

[cpp]  view plain copy
  1. NSNumber *num = [NSNumber numberWithInt:88];  
  2.    NSInteger integer = [num intValue];  

5、NSString与NSInteger的相互转换

[cpp]  view plain copy
  1. NSInteger integerNumber = 888;  
  2. NSString * string = [NSString stringWithFormat:@"%d",integerNumber];  
  3. NSLog(@"string is %@", string);      
[cpp]  view plain copy
  1. integer = [string intValue];  
  2. NSLog(@"integer is%d", integerNumber);  

char  float等类型一样可以转换

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

相关文章:

  • Objective-C语法之类和对象
  • Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等
  • Objective-C语法之KVO的使用
  • iOS的基本的设计模式
  • 图文解释XCode常用快捷键的使用
  • 浅谈iPhone OS(iOS)架构
  • xcode制作越狱的ipa包
  • 如何判断是否是retina屏幕和ipad
  • unity制作连连看小教程
  • iOS应用内支付(IAP)的那些坑
  • Unity 游戏引擎的移动基本版从今天起免费提供
  • 我是如何在GitHub上开源一个项目的(截图说明)
  • Unity3D NGUI事务 UIEvents
  • 解决Win7 64位安装 Microsoft .NET Framework 4 失败的情况
  • Win7上Git安装及配置过程
  • @angular/forms 源码解析之双向绑定
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 10个最佳ES6特性 ES7与ES8的特性
  • 78. Subsets
  • Angular2开发踩坑系列-生产环境编译
  • chrome扩展demo1-小时钟
  • flutter的key在widget list的作用以及必要性
  • Java程序员幽默爆笑锦集
  • React-flux杂记
  • REST架构的思考
  • vue-loader 源码解析系列之 selector
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 微信公众号开发小记——5.python微信红包
  • 一些关于Rust在2019年的思考
  • 优化 Vue 项目编译文件大小
  • gunicorn工作原理
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • #每日一题合集#牛客JZ23-JZ33
  • (04)odoo视图操作
  • (C语言)共用体union的用法举例
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (三) diretfbrc详解
  • (生成器)yield与(迭代器)generator
  • (十一)c52学习之旅-动态数码管
  • (转)http协议
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net Application的目录
  • .NET Core中的去虚
  • .NET 使用配置文件
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .net连接oracle数据库
  • .net中的Queue和Stack