データ型など

  • データ型32ビット、64ビット環境でのデータ長
data type 32ビット 64ビット javaでは
short 16 16 16
int 32 32 32
long 32 64 64
char 8 8 16
float 32 32 32
double 64 64 64
BOOL 8 8 -

以下の方法で確認

        NSLog(@"short:%lu", sizeof(short));
        NSLog(@"int:%lu", sizeof(int));
        NSLog(@"long:%lu", sizeof(long));
        NSLog(@"float:%lu", sizeof(float));
        NSLog(@"double:%lu", sizeof(double));
        NSLog(@"char:%lu", sizeof(char));
        NSLog(@"BOOL:%lu", sizeof(BOOL));

mac lionでの実行結果(64ビット環境)

2012-02-11 07:47:09.196 Study[292:707] short:2
2012-02-11 07:47:09.199 Study[292:707] int:4
2012-02-11 07:47:09.199 Study[292:707] long:8
2012-02-11 07:47:09.200 Study[292:707] float:4
2012-02-11 07:47:09.201 Study[292:707] double:8
2012-02-11 07:47:09.202 Study[292:707] char:1
2012-02-11 07:47:09.202 Study[292:707] BOOL:1
  • 構造体
        // 基本的な構想体の使用
        struct Person1{
//            NSString nsname; ここでNSStringは使用できない
            char *name;
            int age;
        };
        struct Person1 p1;
        p1.name = "name";
        // タグ名省略
        struct {
            char *name;
            int age;
        } Person2;
        Person2.name = "name2";
        // 別名で定義
        typedef struct{
            char *name;
            int age;
        } Person;
        Person p;
        p.name = "name";
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    enum language {
        objective_c,
        java,
        groovy,
    };
    
    @autoreleasepool {
        enum language l1 = java;
        NSLog(@"l1=%d", l1);
        // int型に設定可能
        int l2 = groovy;
        NSLog(@"l2=%d", l2);
    }
    return 0;
}

実行結果は

2012-02-11 21:27:11.756 Study[343:707] l1=1
2012-02-11 21:27:11.769 Study[343:707] l2=2

objective-cでは、enum型は、値を指定しない場合、順に0,1,2...と連番になっている