数据类型和表达式

作者:追风剑情 发布于:2019-2-20 10:07 分类:Objective-C

基础数据类型
类型 实例 NSLog字符
char 'a'、'\n' %c
short int
%hi、%hx、%ho
unsigned short int
%hu、%hx、%ho %hu、%hx、%ho
int 12、-97、0xFFE0、0177 %i、%x、%o
unsigned int 12u、100U、0XFFu %u、%x、%o
long int 12L、-200l、0xffffL %li、%lx、%lo
unsigned long int 12UL、100ul、0xffeeUL %lu、%lx、%lo
long long int 0xe5e5e5e5LL、500ll %lli、%llx、%llo
unsigned long long int 12ull、0xffeeULL %llu、%llx、%llo
float 12.34f、3.1e-5f、0x1.5p10、0x1P-1 %f、%e、%g、%a
double 12.34、3.1e-5、0x.1p3 %f、%e、%g、%a
long double 12.34L、3.1e-5l %Lf、%Le、%Lg
id nil %p
NAN nan 表示不是一个数字,这个字符被定义在系统的头文件math.h中
BOOL YES、NO b1=YES; b2=NO

注意,在整型常量中以0开头表示常量是八进制(基数8)的,以0x开头或(0X)表示它是十六进制(基数16)的,数字0x.1p3表示十六进制浮点常量。此外,前缀f、l(L)、u(U)和ll(LL)用来明确表示常量是float、long、unsigned和long long类型。
id数据类型可存储任何类型的对象。从某种意义说,它是一般对象类型。id类型是Objective-C中十分重要的特性,它是多态和动态绑定的基础。

关系运算符
运算符 含义 例子
== 等于 count == 10
!= 不等于 flag != DONE
< 小于 a < b
<= 小于或等于 low <= high
> 大于 points > POINT_MAX
>= 大于或等于 j >= 0

示例一

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int integerVar = 100;
        float floatingVar = 331.79;
        double doubleVar = 8.44e+11;
        char charVar = 'W';
        
        NSLog(@"integerVar = %i", integerVar);
        NSLog(@"floatingVar = %f", floatingVar);
        NSLog(@"doubleVar = %e", doubleVar);
        NSLog(@"doubleVar = %g", doubleVar);
        NSLog(@"charVar = %c", charVar);
    }
    return 0;
}

运行测试

9999.png

示例二:计算器类

3333.png


Calculator.h

#import <Foundation/Foundation.h>

@interface Calculator : NSObject

// 累加方法
-(void) setAccumulator: (double) value;
-(void) clear;
-(double) accumulator;
// 算术运算
-(void) add: (double) value;
-(void) subtract: (double) value;
-(void) multiply: (double) value;
-(void) divide: (double) value;

@end


Calculator.m

#import "Calculator.h"

@implementation Calculator
{
    double accumulator;
}
-(void) setAccumulator: (double) value
{
    accumulator = value;
}

-(void) clear
{
    accumulator = 0;
}

-(double) accumulator
{
    return accumulator;
}

-(void) add: (double) value
{
    accumulator += value;
}

-(void) subtract: (double) value
{
    accumulator -= value;
}

-(void) multiply: (double) value
{
    accumulator *= value;
}

-(void) divide: (double) value
{
    accumulator /= value;
}

@end


main.m

//<>导入系统文件
//""导入本地文件(自己创建的.h)
#import <Foundation/Foundation.h>
#import "Calculator.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Calculator *deskCalc = [[Calculator alloc] init];
        
        [deskCalc setAccumulator: 100.0];
        [deskCalc add: 200.];
        [deskCalc divide: 15.0];
        [deskCalc subtract: 10.0];
        [deskCalc multiply: 5];
        NSLog(@"The result is %g", [deskCalc accumulator]);
    }
    return 0;
}

运行测试

1111.png

示例三:类型转换


#import <Foundation/Foundation.h>
#import "Calculator.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        float f1 = 123.125, f2;
        int i1, i2 = -150;
        
        i1 = f1; // 浮点数到整数的转换
        NSLog(@"%f assigned to an int produces %i", f1, i1);
        
        f1 = i2; // 整数到浮点数的转换
        NSLog(@"%i assigned to a float produces %f", i2, f1);
        
        f1 = i2 / 100; //整数除以整数
        NSLog(@"%i divided by 100 produces %f", i2, f1);
        
        f2 = i2 / 100.0; // 整数除以浮点数
        NSLog(@"%i divided by 100.0 produces %f", i2, f2);
        
        f2 = (float) i2 / 100; //类型强制转换运算符
        NSLog(@"(float) %i divided by 100 produces %f", i2, f2);
        
        //类型转换运算符通常用于将一般id类型的对象转换成特定类的对象。
        //将id变量myNumber的值强制类型转换成一个Calculator对象,转换结果赋给变量myCalculator
        id myNumber;
        Calculator *myCalculator;
        myCalculator = (Calculator *) myNumber;
        NSLog(@"myNumber %p", myCalculator);
    }
    return 0;
}


运行测试

33333.png


标签: Objective-C

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号