32位/64位机上常用数据类型字节数(C语言)(转的)
可用如sizeof(char),sizeof(char*)等得出
32位编译器
char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32,即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int:??4个字节
unsigned int : 4个字节
float:??4个字节
double:???8个字节
long:??4个字节
long long:??8个字节
unsigned long:?4个字节
?
64位编译器
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int:??4个字节
unsigned int : 4个字节
float:??4个字节
double:???8个字节
long:??8个字节
long long:??8个字节
unsigned long:?8个字节
?
?
#import <Foundation/Foundation.h>
struct {
? ? short a1;
? ? short a2;
? ? short a3;
}A;
struct {
?? long long a1;
? ? short a2;
}B;
?
int main (int argc, const char * argv[])
{
?
? ? @autoreleasepool {
?
? ? ? ? char *ss1="0123456789";
? ? ? ? char ss2[]="0123456789";
? ? ? ? char ss3[100]="0123456789";
? ? ? ? int ss4[100];
? ? ? ? char q1[]="abc";
? ? ? ? char q2="a\n";
? ? ? ? char *q3="a\n";
? ? ? ? char *str1=(char *)malloc(100);
? ? ? ? void *str2=(void *)malloc(100);
? ? ? ? NSLog(@"%lu",sizeof(ss1));//8
? ? ? ? NSLog(@"%lu",sizeof(ss2));//11
? ? ? ? NSLog(@"%lu",sizeof(ss3));//100
? ? ? ? NSLog(@"%lu",sizeof(ss4));//400
? ? ? ? NSLog(@"%lu",sizeof(q1));//4
? ? ? ? NSLog(@"%lu",sizeof(q2));//1
? ? ? ? NSLog(@"%lu",sizeof(q3));//8
? ? ? ? NSLog(@"%lu",sizeof(str1));//8
? ? ? ? NSLog(@"%lu",sizeof(str2));//8
? ? ? ? NSLog(@"%lu",sizeof(A));//6
? ? ? ? NSLog(@"%lu",sizeof(B));//16
?
?
?
?
?
? ? }
? ? return 0;
}
?
?
?
?
?
?
?