• 【C语言入门教程】2.1 数据类型(5种基本数据类型),聚合类型与修饰符


    C语言有5种基本的数据类型,分别为 字符型整型单精度浮点型双精度浮点型空类型

    在不同的操作系统或硬件平台中,这些数据类型的值域范围和所占用的内存是有差异的。这种差异影响了C语言的可移植性能,但如果能深入理解数据类型的构成,则可以最大程度避免该问题。

    2.1.1 基本数据类型的字长与范围

    字长是指数据所占用内存的数量,字长决定了数据类型的值域,即范围。以字符型为例,ANSI C标准中的字符型的长度是 1 字节(8位二进制编码),可计算其值域为 -2的7次方 - +2的7次方,取值范围为 -128~127。
    计算机所使用的ASCII字符编码共有 128 个元素,所以用字符型可将全部元素表示出来。依次类推,ANSI C 标准中其他基本类型的字长与范围如下表所示:

    ANSI C标准基本类型的字长与范围
    基本类型 字长 范围
    char(字符型) 1字节 -128~127
    int(整型) 2字节 -32768~32767
    float(单精度浮点型) 4字节 约精确到6位数
    double(双精度浮点型) 8字节 约精确到12位数
    void(空值型) 0字节 无值

    由于硬件平台和操作系统的不同,数据类型的字长可能与上表不同。例如,运行在AMD64架构的Linux系统中,整型的长度为 4 字节。要获得当前系统环境中数据类型的字长,可运行下列程序。

    #include <stdio.h>
    
    int main()
    {
    	printf("字符型字长为%d
    ", sizeof(char));
    	printf("整型字长为%d
    ", sizeof(int));
    	printf("长整型字长为%d
    ", sizeof(long));
    	printf("单精度浮点型字长为%d
    ", sizeof(float));
    	printf("双精度浮点型字长为%d
    ", sizeof(double));
    
    	return 0;
    }

    输出:

    字符型字长为 1
    整型字长为 4
    长整型字长为 8
    单精度浮点型字长为 4
    双精度浮点型字长为 8

    该程序使用 sizeof() 函数返回数据类型的字长,sizeof()函数的返回值为整型数据 ,返回的结果由printf()函数输出到终端中。

    2.1.2 聚合类型与修饰符

    C语言支持聚合类型,包括数组、指针、结构体、公用体(联合)、位域和枚举。聚合类型构成了复杂的数据结构,用以描述事物的各种属性。除 void类型 外,基本类型的前面可以有各种修饰符。修饰符用来改变
    基本类型的意义,以便更准确地适应各种情况的需求。修饰符如下:

    • signed(有符号);
    • unsigned(无符号);
    • short(短型);
    • long(长型);

    signedunsignedshortlong 修饰符适用于 字符整数 两种基本类型,而 long 还可以用于 double 。unsigned 和 signed 修饰符分别表示 无正负值符号有正负值符号 的数据类型中,
    计算机中原始数据类型使用的是二进制数,如果要表示正负值符号则需要用1位存储空间。以字符型为例,无符号字符型取值值域为 2的8次方,那么范围为 0~255,有符号字符型将1位用于存储符号,取值值域为 2的7次方,那么范围为 -128~127。下表给出所有根据 ANSI C 标准而组合的类型、字长和范围。

    ANSI C标准组合的类型、字长和范围
    类型 字长 范围
    char(字符型) 1字节 -128~127
    unsigned char(无符号字符型) 1字节 0~255
    signed char(有符号字符型) 1字节 -128~127
    int(整型) 2字节 -32 768~32 767
    unsigned int(无符号整型) 2字节 0~65 535
    signed int(有符号整型) 2字节 -32 768~32 767
    short int(短整型) 1字节 -128~127
    unsigned short int(无符短整型) 1字节 0~255
    signed short int(有符号短整型) 1字节 -128~127
    long int(长整型) 4字节 -2 147 483 648~2 147 483 647
    unsigned long int(无符号长整型) 4字节 0~4 294 967 296
    signed long int(有符号长整型) 4字节 -2 147 483 648~2 147 483 647
    float(单精度浮点型) 4字节 约精确到 6 位数
    double(双精度浮点型) 8字节 约精确到 12 位数
    void(空值型) 0字节 无值

    因为数据类型的默认定义是有符号数,所以 signed修饰符通常可省略。某些编译器允许将unsigned用于浮点型,如 unsigned double。但这一用法降低了程序的可移植性,故建议一般不要采用。为了使用方便,GCC编译程序允许使用整型的简写形式:short int 表示 short,即 int 可省略。

    注意:表示正数时,最大能表示的值总是比值域少 1,这是因为将 0 作为正数看待,0占用了一个取值空间。

  • 相关阅读:
    WP之Sql Server CE数据库
    WP布局之Pivot和Panorama
    设计模式之职责链模式
    设计模式之命令模式
    设计模式之桥接模式
    设计模式之组合模式
    设计模式之备忘录模式
    设计模式之适配器模式
    记录参加微软打造开发者社会生态圈线下会议
    ”我的2016“-太多难忘的第一次
  • 原文地址:https://www.cnblogs.com/52php/p/5681122.html
Copyright © 2020-2023  润新知