您的位置:首页 > 编程语言 > C语言/C++

C语言中数据类型及长度

2013-08-12 22:51 337 查看
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

转载请注明出处
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: