データ型など
- データ型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";
- enum型
#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...と連番になっている