zoukankan      html  css  js  c++  java
  • objective-c 数据类型 (1)

    objective-c提供的基本数据类型:int,float,double,char。

    Int:
    八进制 整型第一位为
    0, NSLog 的格式符为: %o 显示的八进制不带前导 0

                        %#o 显示的八进制带前导0

    十六进制 以 0x 开头的整型,NSLog 的格式符为: 


            %x
    显示的十六进制不带前导 0x

            %#x 显示的十六进制带前导0x

        若(%X 或%#X) 显示的十六进制用大写

    Float:
    NSLog 的格式符:%f
    NSLog
    的格式符:%e 科学计数法显示值
    NSLog 的格式符:%g 指数的值小于-4 大于 5,采用%e,否则采用%f
    十六进制的浮点常量包含前导 0x 0X,后面紧跟一个或多个十进制或十六进制数字,再后是p P,最后 是可以带符号的二进制指数。例:0x0.3p10 表示的值为

    3/16*2的10次方
    注:若无特殊说明,Object-c 将所有的浮点常量看做 double 值,要显示 double 值可使用和 float

    一样的格式符。

    Char:
    NSLog 的格式符:%c
    long double
    常量写成尾部带有字母 l 或者 L 的浮点常量。1.234e+7L

    page8image6912

    类型

    NSLog 格式符

    八进制

    十六进制

    十进制

    long int

    %lo

    %lx

    %li

    long long int

    %llo

    %llx

    %lli

    long double

    %Lg

    %Le

    %Lf

    short int

    %ho

    %hx

    %hi

    unsigned short int

    %ho

    %hx

    %hu

    unsigned int

    %o

    %x

    %u

    unsigned long int

    %lo

    %lx

    %lu

    unsigned long long int

    %llo

    %llx

    %llu

    id

    %p

    注:id 类型可以通过类型转化符可以将一般的id 类型的对象转换成特定的对象。

     

    _Bool     处理 Boolean(即 0 或 1) 

    _Complex  处理复数

    _Imaginary  

    处理抽象数字 

    键盘输入:

    int number;

    scanf("%i",&number); 

    实例变量的初始化值默认为 0

    实例变量作用域的指令:

    @protected @private @public

    @package

    实例变量可被该类及任何子类中定义的方法直接访问(默认的情况) 。

    实例变量可被定义在该类的方法直接访问,不能被子类定义的方法直接访问。 实例变量可被该类中定义的方法直接访问,也可被其他类或模块中定义的方法访 问。使得其他方法或函数可以通过(->)来访问实例变量(不推荐用) 。

    对于 64 位图像,可以在实现该类的图像的任何地方访问这个实例变量。

    在类中定义静态变量和 C 一样
    voaltile说明符和const 正好相反,明确告诉编译器,指定类型变量的值会改变。(I/O端口) 比如要将输出端口的地址存储在 outPort 的变量中。
    volatile char *outPort;
    *outPort = 'O';
    *outPort = 'N';
    这样就可以避免编译器将第一个赋值语句从程序中删除

    枚举数据类型、typedef 语法以及数据类型的转换和 C 也是一样。 

     1.整型 (int) 浮点型 (float, double)  短长整型(short, long)

    仍然将代码加载viewDidLoad中[super viewDidLoad]后面。

     1  //整型
     2     int i = 100;
     3     //浮点型
     4     float f = 1.1;
     5     //双浮点型
     6     double d = 2.2;
     7     //短整型
     8     short int si = 200;
     9     //长整型
    10     long long int ll = 123324123234123L;
    11     
    12     //输出数据与内存中所占字节数
    13     //整型
    14     NSLog(@"i = %d size = %lu byte ",i, sizeof(i));
    15     //浮点型
    16     NSLog(@"f = %f size = %lu byte",f,sizeof(f));
    17     //双浮点型
    18     NSLog(@"d = %e size = %lu byte",d,sizeof(d));
    19     //短整型
    20     NSLog(@"si = %hi size = %lu byte",si,sizeof(si));
    21     //长整型
    22     NSLog(@"ll = %lli size = %lu byte",ll,sizeof(ll));

    结果

    013-12-23 11:49:37.324 HelloWorld_20131017[1242:c07] i = 100 size = 4 byte 

    2013-12-23 11:49:37.324 HelloWorld_20131017[1242:c07] f = 1.100000 size = 4 byte

    2013-12-23 11:49:37.324 HelloWorld_20131017[1242:c07] d = 2.200000e+00 size = 8 byte

    2013-12-23 11:49:37.325 HelloWorld_20131017[1242:c07] si = 200 size = 2 byte

    2013-12-23 11:49:37.325 HelloWorld_20131017[1242:c07] ll = 123324123234123 size = 8 byte

    2.字符串 NSString*  与  char* 

    1  NSString * str5=@"MOMO";
    2     char *c="192745936";
    3     
    4     const char *change =[str5 UTF8String];
    5     
    6     NSLog(@"str = %@ size = %lu", str5,sizeof(str5));
    7     NSLog(@"c = %s size = %lu", c, sizeof(c));
    8     NSLog(@"change = %s size = %lu", change, sizeof(change));

    输出:

    2013-12-23 11:49:37.326 HelloWorld_20131017[1242:c07] str = MOMO size = 4

    2013-12-23 11:49:37.327 HelloWorld_20131017[1242:c07] c = 192745936 size = 4

    2013-12-23 11:49:37.327 HelloWorld_20131017[1242:c07] change = MOMO size = 4

    字符串格式化

    使用stringWithFormat 方法来格式化字符串 

    意思就是将整型 字符型 等等 合并成一个NSString*类型

    1  NSString * str6 = [NSString stringWithFormat:@"姓名:%@ 年龄:%d 邮箱:%@" ,@"雨松momo",25,@"xuanyusong@gmail.com"];

        NSLog(@"str = %@",str6);

    输出:

    2013-12-23 11:49:37.328 HelloWorld_20131017[1242:c07] str = 姓名:雨松momo 年龄:25 邮箱:xuanyusong@gmail.com

    3.布尔值

    宏定义 真为YES 假为NO 

    因为Objective-C 是C语言的超集 所以在代码中写 true 和false 也是可以运行通过的

    这里毕竟是Objective-C 所以还是建议使用YES 和  NO

    这里再讲解一下 YES NO:

    Object-c 提供了 BOOL 类型, 但这个BOOL 类型和 C++里的并不一样:

      在C++里一切非 0 值的东西都 为 true,而为 0 值的为 false

    但是

      Object-c 1 true 并被宏定义为 YES,0 false 并被宏定义为 NO。 

    所以,如果读者写下面的代码,则肯定是错误的:

    BOOL areIntsDifferent_faulty(intthing1,int thing2) {

    return (thing1-thing2); }

    if(areIntsDifferent_faulty(23,5)== YES)
    {
    }
    因为 areIntsDifferent_faulty 方法返回的是两个整数的差,如果这个差不为 1,那么永远不会为 YES。 

     1  bool a = false;
     2     bool b = true;
     3     
     4     if(a == b)
     5     {
     6         NSLog(@"a与b相等");
     7     }
     8     
     9     if(a != b)
    10     {
    11         NSLog(@"a与b不等");
    12     }
    13     
    14     
    15     bool e= YES;
    16     bool t =YES;
    17     
    18     if(e == t)
    19     {
    20         NSLog(@"e与t相等");
    21     }
    22     
    23     if(e!= t)
    24     {
    25         NSLog(@"e与t不等");
    26     }

    输出:

    2013-12-23 16:18:02.519 HelloWorld_20131017[1982:c07] ab不等

    2013-12-23 16:18:02.519 HelloWorld_20131017[1982:c07] et相等

  • 相关阅读:
    knockout之ko if绑定和ifnot绑定
    inline-block去掉空白距离的方法
    DOM
    $(document).ready()与window.onload的区别
    white-space: nowrap
    商品列表属性过滤
    for循环与for in循环
    表单验证
    表单验证四个步骤
    ID和Name的区别
  • 原文地址:https://www.cnblogs.com/aosting/p/3487639.html
Copyright © 2011-2022 走看看