17.3.10--关于C元的变量类型所占字节问题和类型转化

 

在C语言并没有对于严格规定short,int  long所占字节,只是做了宽泛要求:
short:至少连个字节

int建议为一个机器字长,32位环境下机器字长是4个字节,64位环境机器字长是8个字节

short的长度不能大于int,long的长度不能小于int

类型转化:char,short--->int--->unsigned --->long--->double<-----float

 

 再详细一点可以参看:

http://blog.csdn.net/zhangzhi123456789/article/details/49589137

 

1-----

这个与自己的编译器的位数有关系,但是也有几条铁定的规则:

   sizeof(short int)《=sizeof(int)

  sizeof(int)<=sizeof(long int)

short int 至少是16位(2个字节)

long int至少是32位

                                                            这个unsigned是代表没有符号的意思

例如:

十六位编辑器:

char  1个字节

char *(指针变量类型):2个字节

short int 2个字节

unsigned int :2个字节

float 4个字节

double 8个字节

long 4个字节

long long  8个字节

unsigned long 4个字节

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个字节(和上面的那个是一样的,就是指针类型 而且是64位编辑器,所以寻址范围就是8个字节)
short int : 2个字节
int:  4个字节
unsigned int : 4个字节
float:  4个字节
double:   8个字节
long:   8个字节
long long:  8个字节
unsigned long:  8个字节 
不同进制的整数:
八进制:使用时,开头必须是0开头(注意是数字零,不是字母o)
1 //合法的八进制数
2 int a = 015;  //十进制为 13
3 int b = -0101;  //十进制为 -65
4 int c = 0177777;  //十进制为 65535
5 
6 //非法的八进制
7 int m = 256;  //无前缀 0,相当于十进制
8 int n = 03A2;  //A不是有效数字

十六进制:由数字0~~9,字母A-F表示,使用时开头必须是0x或者0X:

//合法的十六进制
int a = 0X2A;  //十进制为 42
int b = -0XA0;  //十进制为 -160
int c = 0xffff;  //十进制为 65535

//非法的十六进制
int m = 5A;  //无前缀 0X
int n = 0X3H;  //H不是有效数字

各种整数输出:

  int -->%d   short-->%hd    long--->%ld

输出十进制   %d

输出八进制   %o(注意是字母o)

输出十六进制   %x或者%X,

在各个输出还可以加上#       %#d    %#o     %#x    %#X

 

posted @ 2017-03-10 10:14  小油菜1  阅读(177)  评论(0编辑  收藏  举报