PS:以下内容是在Xcode的编辑器64位环境下的测试结果,网上有关于64位和32位各数据类型存在的差异,请自行online search。
main.m
1 #import <Foundation/Foundation.h> 2 void basicDataTypeInC() { 3 NSMutableString *mStrInfo = [[NSMutableString alloc] init]; 4 //(数值类型-》整型)整型;-2147483648至2147483647 5 int integerVal = 888; 6 //(数值类型-》整型)短整型 7 short int shortIntegerVal = 888; 8 //(数值类型-》整型)长整型 9 long int longIntegerVal = 888; 10 11 //(数值类型-》浮点型)单精度型,存在失精度的情况(如下:由于单精度型,有效位数是6-7位。而整数已占3位,故小数3位或4位后均为无效数字) 12 float floatVal = 888.8888888888; 13 //(数值类型-》浮点型)双精度型(如下:由于是双精度型,有效位数是15-16位。但VC6.0规定小数后最多保留6位,其余部分四舍五入) 14 double doubleVal = 888.8888888888; 15 16 17 //字符类型 18 char charVal = 'a'; 19 char charVal2 = 97; 20 //字符串类型;实质是使用指针类型 21 char *charVal3 = "I am a string."; 22 23 //布尔型;非0和false,即为1表示true 24 bool boolVal = true; 25 bool boolVal2 = -1; 26 bool boolVal3 = 1; 27 bool boolVal4 = 2; 28 [mStrInfo appendFormat:@" integerVal=%i ", integerVal]; //integerVal=888 29 [mStrInfo appendFormat:@"shortIntegerVal=%hi ", shortIntegerVal]; //shortIntegerVal=888 30 [mStrInfo appendFormat:@"longIntegerVal=%li ", longIntegerVal]; //longIntegerVal=888 31 [mStrInfo appendFormat:@"floatVal=%f ", floatVal]; //floatVal=888.888916 32 [mStrInfo appendFormat:@"doubleVal=%f ", doubleVal]; //doubleVal=888.888889 33 [mStrInfo appendFormat:@"charVal=%c ", charVal]; //charVal=a 34 [mStrInfo appendFormat:@"charVal2=%c ", charVal2]; //charVal2=a 35 [mStrInfo appendFormat:@"charVal3=%s ", charVal3]; //charVal3=I am a string. 36 [mStrInfo appendFormat:@"boolVal=%i ", boolVal]; //boolVal=1 37 [mStrInfo appendFormat:@"boolVal2=%i ", boolVal2]; //boolVal2=1 38 [mStrInfo appendFormat:@"boolVal3=%i ", boolVal3]; //boolVal3=1 39 [mStrInfo appendFormat:@"boolVal4=%i ", boolVal4]; //boolVal4=1 40 41 42 [mStrInfo appendFormat:@"sizeof(int) 为%lu个字节 ", sizeof(int)]; //sizeof(int) 为4个字节 43 [mStrInfo appendFormat:@"sizeof(short int) 为%lu个字节 ", sizeof(short int)]; //sizeof(short int) 为2个字节 44 [mStrInfo appendFormat:@"sizeof(long int) 为%lu个字节 ", sizeof(long int)]; //sizeof(long int) 为8个字节 45 [mStrInfo appendFormat:@"sizeof(float) 为%lu个字节 ", sizeof(float)]; //sizeof(float) 为4个字节 46 [mStrInfo appendFormat:@"sizeof(double) 为%lu个字节 ", sizeof(double)]; //sizeof(double) 为8个字节 47 [mStrInfo appendFormat:@"sizeof(char) 为%lu个字节 ", sizeof(char)]; //sizeof(char) 为1个字节 48 [mStrInfo appendFormat:@"sizeof(bool) 为%lu个字节", sizeof(bool)]; //sizeof(bool) 为1个字节 49 NSLog(@"%@", mStrInfo); 50 } 51 int main(int argc, const char * argv[]) { 52 @autoreleasepool { 53 NSLog(@"C语言的基本数据类型长度"); 54 basicDataTypeInC(); 55 } 56 return 0; 57 }
结果:
1 2015-05-15 23:01:06.687 CBasicDataType[917:36520] C语言的基本数据类型长度 2 2015-05-15 23:01:06.688 CBasicDataType[917:36520] 3 integerVal=888 4 shortIntegerVal=888 5 longIntegerVal=888 6 floatVal=888.888916 7 doubleVal=888.888889 8 charVal=a 9 charVal2=a 10 charVal3=I am a string. 11 boolVal=1 12 boolVal2=1 13 boolVal3=1 14 boolVal4=1 15 sizeof(int) 为4个字节 16 sizeof(short int) 为2个字节 17 sizeof(long int) 为8个字节 18 sizeof(float) 为4个字节 19 sizeof(double) 为8个字节 20 sizeof(char) 为1个字节 21 sizeof(bool) 为1个字节