首页 > 技术文章 > C语言------数据类型

kennyael 2018-10-14 11:36 原文

1. C语言中标识符是区分大小写的。例如下面定义的两个变量由于大小写不同,因此是两个独立的变量:

  int mingri;

  int MINGRI;

2. 数据类型包括:基本类型、构造类型、指针类型以及空类型(即void)。

  基本类型包括:整型、字符型、浮点型、枚举类型;

    整型包括:短整型(short )、基本整型(int)、长整型(long);

    浮点型包括:单精度型(float)、双精度型(double)、长双精度型(long double)

  构造类型包括:数组类型、结构体类型、共用体类型;

3. C语言的精华是指针!!!!!指针的值表示的是某个内存地址。

4. 整型可以是16位的也可以是32位的,这是根据编译器不同决定的,在16位的计算机中整型就是16位,在字长为32位的计算机上整型就是32位的。

5. 长整型是32位的,其取值范围依据是否是有符号的决定,无符号的取值范围为0~4294967295,有符号的取值范围为-2147483648~214748647。在编写整型常量时,可以在常量的后面加上符号L或者U进行修饰。需要注意的是这个U或者L是不区分大小写的,即也可以写成u或l。L表示该常量是长整型,U表示该常量是无符号型整型。例如:

  LongNum = 1000L;            /*L表示长整型*/

  UnsignLongNum = 500U;    /*U表示无符号整型*/

6. 八进制:在常数前加上0进行修饰,例如:

  OctalNumber = 0123;       /*在常数前面加上一个0来代表八进制*/

    十六进制:在常数前面使用0x作为前缀,十六进制包含数字0~9以及字母A~F。需要注意的是,其中字符可以是大写的A~F也可以是小写的a~f。例如:

  HexNumber = 0x123;       /*加上前缀0x表示常量为十六进制数*/

    十进制数:不需要加任何前缀。

7. 整型数据是以二进制的方式存放在计算机内存中的,其数值以补码方式表示,正数的补码与其原码的形式相同,负数的补码是将该数的绝对值的二进制形式按位取反再加1。

8. 浮点型也称为实型,表示的方式有两种:科学技术方式和指数方式。

  科学技术方式:

    SciNum1 = 123.45;    /*科学技术法*/ 

    SciNum2 = 0.5458;    /*科学技术法*/ 

  指数方式(上面两个值等价于):

    SciNum1 = 1.2345e2;   /*指数方式*/

    SciNum2 = 5.458e-1; /*指数方式*/

  需要说明的是:指数表示法中e也可以写成E,这是不区分大小写的。

         实型类似于整型,在后面可以加L或者F来进行修饰,其中F表示该常量是float单精度类型,L表示为long double长双精度类型。并且后缀也是不区分大小写的。

         如果后面不带后缀,则默认状态下,实型常量为double双精度类型。

9. 字符型常量分为字符常量以及字符串型常量两种。分别需要使用定界符("以及“”)来进行限制。

  需要注意的是:

    字符常量中只包括一个字符,不能是字符串。

    字符常量是区分大小写的。 'A'和'a'是不一样的两个字符。

    putchar()函数可以输出单个字符到控制台上。例如:putchar(‘A’)

    printf()函数可以将一个字符串输出到控制台上,例如:printf("Hello World!")

    字符串中如果一个字符都没有(“”)则该字符串的长度为0.

    在C语言中存储字符串常量时,系统会在字符串末尾自动加一个‘\0’作为字符串的结束符。例如字符串Hello在内存中的形式为Hello\0。在实际程序中编写字符串常量时,不必在一个字符串的结尾加'\0',                系统会自动给我们加的。

    字符常量和字符串常量还有一个重要的不同是:字符常量的长度就是1,而字符串的长度却可以是0,同时如果字符串常量中的字符个数只有1,那么该字符串的长度也并不是1,而是2,因为多了一                    个'\0'。  --------------------!!!!!!!!!!!!

10. 转义字符:以反斜杠"\"开头的字符,后面跟一个或几个字符。

转义字符   意义 转义字符 意义
\n 回车换行 \\ 反斜杠"\"
\t 横向跳到下一个制表位置 \' 单引号
\v 竖向跳格 \a 鸣铃
\b 退格 \ddd 1~3位八进制数所代表的字符
\r 回车 \xhh 1~2位十六进制数所代表的字符
\f 走纸换页    

 11. 符号变量:使用一个符号名代替一个固定的常量值,好处是方便编程和阅读。例如:

    #define PAI 3.14         /*定义符号变量*/

12. 整型变量(通常说到的整型,都是指有符号的基本类型int):

    有符号基本整型:signed int型, signed可以进行省略  即写为:int。占据4个字节的内存空间。例如:int iNumber = 1;  

    无符号基本整型:unsigned int型,int可以进行省略,即写为:unsigned。占据4个字节的内存空间。例如:unsigned iUsignedNumber = 1;

    有符号短整型:signed short int型,signed和int都可以省略,即写为:short。占据2个字节的内存空间。例如:short iShortNum = 10;

    无符号短整型:unsigned short int型,int可以省略,即写为:unsigned short。占据2个字节的内存空间。例如:unsigned short iShortNum = 10;

    有符号长整型:signed long int型,signed和int可以省略,即写为:long。占据4个字节的内存空间。例如:long iLongNum = 10;

    无符号长整型:unsigned long int型,int可以省略,即写为:unsigned long。占据4个字节的内存空间。例如 unsigned long iUnsignedLongNum = 10;

13. 单精度类型float,占据4个字节内存,例如: float fFloatStyle = 3.14f;

    双精度类型double(浮点型数默认的类型),占据8个字节内存,例如: double dDoubleStyle = 5.321;

   长双进度类型long double,占据8个字节内存,例如:long double fLongDouble = 46.257;

14. 字符型变量占据1个内存空间,用char关键字定义。C语言允许字符型数据与整型数据之间通用,例如char cChar1 = 'a' 等价char cChar1 = 97;

15. 变量的存储类别有四类:auto、static、register、extern。

   auto:局部变量默认都是该种类型,内存地址动态分配。

   static:静态变量。!!!!需要注意的是:对于局部变量来说,static变量是和auto变量相对而言的,尽管两者的作用域都是仅限于声明变量的函数中,但是在语句块执行期间,static将始终保持他的值,并且初始化操作只在第一次执行时起作用。在随后的运行过程中,变量将保持语句块上一次执行时的值。!!!!!!!!看书中的例子P52~53进行对比。

      register:寄存器变量。目的是使变量不存在内存中,而存在硬件寄存器中,从而提高程序执行速度。但是从程序可移植角度来说,用处不大。

   extern:外部存储变量。extern 声明了程序中将要用到但是尚未定义的外部变量。通常,外部存储类都用于声明在另一个源文件中定义的变量。

 

  

  

推荐阅读