m移动端基础知识浅谈

Objective-C基本的数据类型以及运算符简介

2017-12-07  本文已影响0人  JTR354

OC是增强了C的特性,所以变量和基本数据类型上基本与C一致。
在OC中变量命名有如下规则:

  • 由字母、数字、下划线、$符号组成
  • 必须以字母、下划线、$符号开头
  • 大小写敏感

在OC中定义变量的时候不能使用OC的保留字,OC的保留字如下:


image

常用的一些占位符:

%@:字符串占位符

%d:整型

%ld:长整型

%f:浮点型

%c:char类型

%%:%的占位符

尽管有那么多的占位符,但是好像没有发现BOOL型的数据的占位符,这也是比较纠结的地方,看了一下别人是怎么解决这个问题的

BOOL studyBool = YES;

    NSLog(@"打印BOOL型数据

%@",studyBool?@"YES":@"NO");//;//)

打印BOOL型数据YES

    NSLog(@"打印BOOL型数据%d",studyBool);//打印BOOL型数据1

    BOOL alsoBool = NO;

    NSLog(@"打印BOOL型数据

%@",alsoBool?@"YES":@"NO");//;//)

打印BOOL型数据NO

    NSLog(@"打印BOOL型数据%d",alsoBool);//打印BOOL型数据0

详细介绍:**********************************************************

%@: Objective-C对象,印有字符串返回descriptionWithLocale:如果于的话,或描述相反.CFTypeRef工作对象,返回的结果的CFCopyDescription功能.(这个翻译有问题建议按照自己的理解方式理解)。

%%: 为'%'字符;

%d,%D,%i: 为32位整型数(int);

%u,%U: 为32位无符号整型数(unsigned int);

%hi: 为有符号的16位整型数(short);

%hu: 为无符号的16位整型数(unsigned shord);

%qi: 为有符号的64位整型数(long long);

%qu: 为无符号的64位整型数(unsigned long long);

%x: 为32位的无符号整型数(unsigned int),打印使用数字0-9的十六进制,小写a-f;

%X: 为32位的无符号整型数(unsigned int),打印使用数字0-9的十六进制,大写A-F;

%qx: 为无符号64位整数(unsigned long long),打印使用数字0-9的十六进制,小写a-f;

%qX: 为无符号64位整数(unsigned long long),打印使用数字0-9的十六进制,大写A-F;

%o,%O: 为32位的无符号整数(unsigned int),打印八进制数;

%f: 为64位的浮点数(double);

%e: 为64位的浮点数(double),打印使用小写字母e,科学计数法介绍了指数的增大而减小;

%E: 为64位的浮点数(double),打印科学符号使用一个大写E介绍指数的增大而减小;

%g: 为64位的浮点数(double),用%e的方式打印指数,如果指数小于4或者大于等于精度,那么%f的风格就会有不同体现;

%G: 为64位的浮点数(double),用%E的方式打印指数,如果指数小于4或者大于等于精度,那么%f的风格就会有不同体现;

%c: 为8位的无符号字符%c(unsigned char),通过打印NSLog()将其作为一个ASCII字符,或者,不是一个ASCII字符,八进制格式\ddd或统一标准的字符编码的十六进制格式\udddd,在这里d是一个数字;

%C: 为16位Unicode字符%C(unichar),通过打印NSLog()将其作为一个ASCII字符,或者,不是一个ASCII字符,八进制格式\ddd或统一标准的字符编码的十六进制格式

[\udddd](file:///udddd)

,在这里d是一个数字;

%s: 对于无符号字符数组空终止,%s系统中解释其输入编码,而不是别的,如utf-8;

%S: 空终止一系列的16位Unicode字符;

%p: 空指针(无效*),打印十六进制的数字0-9和小写a-f,前缀为0x;

%L: 在明确规定的长度下,进行修正,下面的一批数据a,A,e,E,f,F,g,G应用于双精度长整型的参数;

%a: 为64位的浮点数(double),按照科学计数法打印采用0x和一个十六进制数字前使用小写小数点p来介绍指数的增大而减小;

%A: 为64位的浮点数(double),按照科学计数法打印采用0X和一个十六进制数字前使用大写字母小数点P界扫指数的增大而减小;

%F: 为64位的浮点数(double),按照十进制表示法进行打印;

%z: 修改说明在%z长度以下d,i,o,u,x,X适用于某一指定类型的转换或者适用于一定尺寸的整数类型的参数;

%t: 修改说明在%t长度以下d,i,o,u,x,X适用于某一指定类型或一定尺寸的整数类型的转换的参数;

%j: 修改说明在%j长度以下d,i,o,u,x,X适用于某一指定类型或一定尺寸的整数类型的转换的参数。


常用的格式化输出:

#import <Foundation/Foundation.h>  
  
int main(int argc, const char * argv[])  
{  
    @autoreleasepool {  
        //保留字是不能定义为变量名的,例如下面的int、float等就不能作为变量名
        int i = 2;
        float f = 2.3f;
        double d = 2.3e12;
        char c = 'a';
        
        BOOL flag = true;
        NSLog(@"flag:%d",flag);
        //输出数据
        NSLog(@"i : %d",i);
        NSLog(@"f : %f 截取后 : %.2f",f,f);
        NSLog(@"d : %e 截取后 : %.2e",d,d);
        NSLog(@"c : %c , %d",c ,c );
        
        //数据转换
        //数据类型容量大的转成小的可能会丢失精度
        int i2 = (int)f;
        float f2 = (float)i ;
        
        NSLog(@"数据转换");
        NSLog(@"i2 : %d",i2);
        NSLog(@"f2 : %f",f2);
        
        int i3 = 0xffffff;
        NSLog(@"i3外面=%d",i3);
        NSLog(@"变量的作用域");
        if(YES){
            int i3 = 2;
            NSLog(@"i3 : %d",i3);
        }
    }  
    return 0;  
}   
/*
2017-12-07 10:31:16.517965+0800 function_func[35565:5466381] flag:1
2017-12-07 10:22:41.180474+0800 function_func[35464:5432868] i : 2
2017-12-07 10:22:41.181330+0800 function_func[35464:5432868] f : 2.300000 截取后 : 2.30
2017-12-07 10:22:41.181807+0800 function_func[35464:5432868] d : 2.300000e+12 截取后 : 2.30e+12
2017-12-07 10:22:41.181894+0800 function_func[35464:5432868] c : a , 97
2017-12-07 10:22:41.181944+0800 function_func[35464:5432868] 数据转换
2017-12-07 10:22:41.181960+0800 function_func[35464:5432868] i2 : 2
2017-12-07 10:22:41.181986+0800 function_func[35464:5432868] f2 : 2.000000
2017-12-07 10:22:41.182003+0800 function_func[35464:5432868] i3外面=16777216
2017-12-07 10:22:41.182011+0800 function_func[35464:5432868] 变量的作用域
2017-12-07 10:22:41.182018+0800 function_func[35464:5432868] i3 : 2
Program ended with exit code: 0
*/

id类型的介绍

id是一种通用的对象类型,她可以用类存储属于任何类的对象,可以理解为万能指针
***在id的定义中,已经包装好了*号,id指针只能指向os的对象
编译器看到id以后,认为是动态类型,不在检查类型

#import <Foundation/Foundation.h>
#import"Dog.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        Animal *ani = [[Animal alloc]init];
        [ani run];//Animal在跑
        Animal *ani2 = [[Dog alloc]init];
        [ani2 run];//Dog 在跑
        
        NSObject *ob = [[Animal alloc]init];
        [(Animal*)ob run];//Animal在跑
        
        ob = [[Dog alloc]init];
        [(Dog*)ob run]; //Dog在跑
        
        //注意id使用
        //id类型的使用
        id obj2;
        obj2 = ani;
        [obj2 run]; //Animal在跑
    }
    return 0;
}

运算符介绍

宏定义

#define RGBAlphaWrong(r, g, b, alpha)  [[UIColor colorWithRed:(r) / 255.0 green:(g) / 255.0 blue:(b) / 255.0 alpha:(alpha) ] set]

 RGBAlphaWrong(85, 26, 19, 0.5);  
参考:
上一篇 下一篇

猜你喜欢

热点阅读