C语言__数据类型

C语言__数据类型

数据类型分类

  1. 基本数据类型:整数类型(short  /  int   /  long  /  long  long int  /  字符型(char)  /  布尔类型bool  )/浮点类型(单精度float  /  双精度double  /  复数浮点类型(float_complex  /  double_complex  /  long_long_complex))

  2. 构造类型:数组类型(【】)  /  结构体类型(struck)  /  共用体类型(union)  /  函数类型  /  枚举类型(enum)

  3. 指针类型(*)
  4. 空类型:(void)

C语言__数据类型_第1张图片


基本数据类型常见存储空间和取值范围

说明:C语言标准并没有规定各种类型的数据的存储单元长度,这是由各编译系统自行决定的。C语言标准只要求long类型存储长度>int长度>short长度

数据类型修饰符:short(短型)  /  long(长形)  /  signed(有符号型)  /  unsigned(无符号型)这些类型修饰符多用于整型(例如short int 可以省略成 short)

整型基本默认为int  /  浮点数默认为double (5.2默认为double类型、要想作为float类型的得这样写 5.2F或者5.2f)

不同位的编译器一次能吞吐的字节数不同,所以不同的编译器对于相同的数据类型分配的字节可能不同。与电脑的系统是多少位没有直接的关系。

C语言__数据类型_第2张图片

枚举类型

  1. 如果一个变量只有几种可能的值,则可以定义为“枚举类型”;所谓“枚举”就是把可能的值一一的列举出来,变量的值只限于列举出来的值的范围。
  2. 可以用“枚举类型”声明符号名称来表示int型常量。只要是能使用int型的地方就能够使用枚举类型。注意:C语言中的枚举的一些特性不适合C++;比如c中的枚举变量允许使用++运算符,但是c++中则不允许。
  3. 有关枚举类型常量的默认值。
  4. 枚举类型也可以是匿名的。
  5. 枚举类型的作用:提高程序的可读性和可维护性。

    语法:
    enum 枚举类型{枚举成员列表};
    //其中的枚举成员列表是以逗号“,”相分隔
    如:
    enum Spectrum{red,balck,yellow,blue,white};
    其中:enum为关键字, Spectrum为该枚举类型的标记名(标记名:遵循标识符的命名规则);
    花括号“{}”中的red,black,yellow,blue,white称为“枚举元素”或“枚举常量”;


    enum Spectrum{red,balck,yellow,blue,white};
                    0    1     2     3     4 
    默认情况下:该枚举列表中的常量值分别为:0,1,2,3,4

    enum Spectrum{red=10,balck=20,yellow=30,blue=40,white=50};

    enum Spectrum{red,balck=22,yellow,blue,white};
    则:red=0,black=22,yellow=23,blue=24,white=25;


    (1)宏定义//很可能会将程序中的变量替换掉,所以为了区分变量名和宏定义,人们通常在宏定义中采取大写的办法 
       #define FALSE 0 
       #define TRUE  1
    (2)匿名的enum枚举//此刻的匿名enum枚举是在编译的时候检查的,要是在程序的其他地方使用会报错
         enum {FALSE,TRUE};      //FALSE 0, TRUE 1


    (3)采用静态变量//编译器在编译阶段的检查,由于是静态变量,因此其作用域被限制到了本文件内。
        static const int FALSE = 0;
        static const int TRUE = 1;

空类型(void)

void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。

void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量

void真正发挥的作用在于:(1) 对函数返回的限定(2) 对函数参数的限定

当函数的放回类型没缺省的时候默认为int类型,当定义函数时没有形参也应写void而不是缺省

如果p1和p2是指向不同的数据类型的指针,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型
【例】 float *p1;   int *p2;   p1 = (float *)p2;

void *则不同,任何类型的指针都可以直接赋值给它,无需进行强制类型转换
【例】    void *p1;     int *p2;     p1 = p2;

派生类型

数组  /  结构体  /  指针等另作详解

你可能感兴趣的:(C语言)