C语言中数据类型及长度

来源:互联网 发布:linux shell sed 编辑:程序博客网 时间:2024/06/04 18:13


C语言中的变量在使用前必须声明,而声明需要指定类型

这个类型决定了程序向系统申请多少的内存空间

各种类型各部相同

下边是几种常用的数据类型:

char:字符类型

int:整形

float:浮点型

double:双精度浮点型

还有写限定字符long和short 使用方法如下:

long int bbb;              //长整形

short int bbb;              //短整形

   shuort类型长度通常为16位,int的长度可以是16位,也可以是32位这个具体有编译器而定,如果是32位的编译器,则int类型为16如果编译器是64位,则int的长度为32

long类型的int长度一定比int长,不管是shuort和int类型最短都是16位,shourt的长度不大于int,而int的长度不大于long int。


限定符signed和unsigned:

signed char aaa;            //带符号的字符

unsigned char aaa;           //不带符号的字符

 unsigned不带符号的字符类型的数,总是正整数,如果char类型的变量大小为8位,那么signed的值为-(2的8次方)/2到 (2的8次方)/2-1之间,也就是-128~127之间,如果是unsigned的话长度是2的8次方-1的长度, 此处以位为单位。


这些限定的类型长度的定义都在<limits.h> 和<float.h>中能找到,具体查看方法:

[root@CWG 桌面]# man limits.h

[root@CWG 桌面]# man float.h


下边是头文件中定义的值符号常量表示CHAR_BITchar 的位数CHAR_MAXchar 的最大值CHAR_MINchar 的最小值SCHAR_MAXsigned char 的最大值SCHAR_MINsigned char 的最小值UCHAR_MAXunsigned char 的最大值SHRT_MAXshort 的最大值SHRT_MINshort 的最小值USHRT_MAXunsigned short 的最大值INT_MAXint 的最大值INT_MINint 的最小值UNIT_MAXunsigned int 的最大值LONG_MAXlong 的最大值LONG_MINlong 的最小值ULONG_MAXunsigned long 的最大值一下是打印各个字符常量所对应的字符长度

用sizeo函数计算字符类型的长度(此处暂时作为了解)

printf("unsigned char is %d bit\n\r", sizeof(uint8)*8);

printf("signed char is %d bit\n\r", sizeof(int8)*8);

printf("unsigned short is %d bit\n\r", sizeof(uint16)*8);

printf("signed short is %d bit\n\r", sizeof(int16)*8);

printf("unsigned int is %d bit\n\r", sizeof(uint32)*8);

printf("signed int is %d bit\n\r", sizeof(int32)*8);

printf("float fp32 is %d bit\n\r", sizeof(fp32)*8);

printf("double fp64 is %d bit\n\r", sizeof(fp64)*8);

printf("unsigned long is %d bit\n\r", sizeof(ulong)*8);

源代码如下:

[[root@CWG hc]# cat cllx.c
#include <stdio.h>
#include <limits.h>
#include <float.h>
main()
{
    printf("以下是取值范围X~Y:\n");
    printf("char range of %d ~ %d\n", CHAR_MAX, CHAR_MIN);
    printf("singned char range of %d ~ %d\n", SCHAR_MAX, SCHAR_MIN);
    printf("unsingned char range of 0 ~ %d\n", UCHAR_MAX);
    printf("shuort int range of %d ~ %d\n", SHRT_MAX, SHRT_MIN);
    printf("unsigned short int range of 0 ~ %d\n", USHRT_MAX);
    printf("int range of %d ~ %d\n", INT_MAX, INT_MIN);
    printf("unsigned int range of 0 ~ %d\n", UINT_MAX);
    printf("long int range of %d ~ %d\n", LONG_MAX, LONG_MIN);
    printf("unsigned long int range of 0 ~ %d\n", ULONG_MAX);

    char uint8 = 0;
        signed char int8 = 0;
        unsigned short uint16 = 0;
        signed short int16 = 0;
        unsigned int uint32 = 0;
        signed int int32 = 0;
        float fp32 = 0;
        double fp64 = 0;
        unsigned long ulong = 0;
    printf("以下是类型所对应的长度:\n");
    printf("char bit:%d\n", CHAR_BIT);
    printf("unsigned char is %d bit\n\r", sizeof(uint8)*8);
    printf("signed char is %d bit\n\r", sizeof(int8)*8);
    printf("unsigned short is %d bit\n\r", sizeof(uint16)*8);
    printf("signed short is %d bit\n\r", sizeof(int16)*8);
    printf("unsigned int is %d bit\n\r", sizeof(uint32)*8);
    printf("signed int is %d bit\n\r", sizeof(int32)*8);
    printf("float fp32 is %d bit\n\r", sizeof(fp32)*8);
    printf("double fp64 is %d bit\n\r", sizeof(fp64)*8);
    printf("unsigned long is %d bit\n\r", sizeof(ulong)*8);
}

运行结果如下:

[root@CWG hc]# cc cllx.c -o cllx
[root@CWG hc]# ./cllx
以下是取值范围X~Y:
char range of 127 ~ -128
singned char range of 127 ~ -128
unsingned char range of 0 ~ 255
shuort int range of 32767 ~ -32768
unsigned short int range of 0 ~ 65535
int range of 2147483647 ~ -2147483648
unsigned int range of 0 ~ -1
long int range of -1 ~ 0
unsigned long int range of 0 ~ -1
以下是类型所对应的长度:
char bit:8
unsigned char is 8 bit
signed char is 8 bit
unsigned short is 16 bit
signed short is 16 bit
unsigned int is 32 bit
signed int is 32 bit
float fp32 is 32 bit
double fp64 is 64 bit
unsigned long is 64 bit


本文要学习的就是以上小程序打印出来的东西


##################################

迷途小运维学习C程序语言笔记

作者:john

转载请注明出处

原创粉丝点击