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;
}