C语言学习笔记             之  数据类型大集合

一:C语言的描述

1.字符C语言的最基本的元素

2.标识符 只能是由字母、数字、下划线组成的字符串,并且第一个字符必须是字母或者下划线。

 在标识符中,大小写是有区别的;

 标识符不能与关键字同名,也不能与系统预先定义的标准标识符同名。

  3.注释符

       ///* ....*/

二:数据类型

1. 常量:常量在程序执行过程中,其值不发生变化。

a、符号常量:

#define PI 3.14
main()
{
   float aera;
   aera=10*10*PI;
}

PI是一个标识符代表一个常量,成为符号常量,他的值是不会改变的,也不能被赋值,比如:PI=3.1415;这是错误的。

符号常量用大写,变量名用小写。

bconst类型修饰符

      Const类型修饰符必须放在它所修饰的类型名之前,用const修饰的标识符为常量。

 比如:  Const float PI=3.14;   或者   float const PI=3.14;

  2.变量:一个变量必须有一个名字(变量名),在内存中占据一定的存储单元,在该单元中存放着变量的值。变量名在程序运行中是不会改变的,而变量值是变化的。变量名是以各种标识符。先定义,后使用

   3.整型

      int  2个字节

      Short int   2个字节

      Long int   4个字节

      Unsigned interface 2个字节   无符号整型变量

  Unsigned  short 2个字节

  Unsigned   long 4 个字节

4.实型数据(又称为浮点型)

a、十进制表示形式: 比如:0.0  .25   5.789  0.13  5.0  300.   -267.8230

b、指数形式:加阶码标识“e”或者“E,比如: 2.1E52.1*105次方),3.7E-23.7*10-2次方)。

以下是非法的实数:

 345E7-553.-E32.7E

c、单精度float,占4个字节,只能提供7位有效数字。

d、双精度double 8个字节,提供16位的有效数字。

e、实型常量不分单精度和双精度。一个实型常量可以赋给一个floatdouble型变量,根据变量的类型截取实型常量中相应的有效位数字

#include<stdio.h>
void main()
{
   float a;
   double b;
   a=54321.54123;
   b=54321.12345612345678;
   printf("a=%f\nb=%f\n",a,b);
}


C语言学习笔记-----数据类型大集合_C语言 数据类型 int float c

a是单精度浮点型,有效位数是7位,整数占了5位,小数54之后的2969均是无效数字。

b是双精度的,小数后最多保留6位,其余部分四舍五入。所以运行结果显示的b的最后一位是7而不是6.

5.字符型数据之字符常量

1)字符常量是字符集(ASCII码)中的字符

     字符常量都是用单引号括起来的一个字符。不能用双引号等。比如:‘a’‘=’。

  数字被定义成字符型之后就不再是原来的数值了。‘5’是字符常量,而5是整型常量。而且,只要是单引号引起来的都是一个字符。‘ABCD’是一个字符  

#include<stdio.h>
void main()
{
   int a='5';
   int b=97;
   printf("a=%d\nb=%c\n",a,b);
}


C语言学习笔记-----数据类型大集合_C语言 数据类型 int float c_02

 为什么a会是53呢,而b却成了a呢? 关键就是想要输出的类型不同了,a=%db=%c

很明显a的结果是整型而b 的结果是字符型。A=5,现在的5是字符,在ASCII中字符‘5’所代表的十进制ASCII码正好是数字53,而十进制ASCII数字97正好代表的是字符a

2)转义字符

 转义字符具有特定的意义,不同于其它字符。常用的转义字符如下;

\n  换行

\0  空字符 通常用于字符串结束标志 ,需要注意的是,这儿的0是数字零 而不是字母o .

\r  回车(不换行)

6.字符型数据之字符变量

1)字符变量用来存放字符常量。

定义:char  a;

2C语言中允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时既可以把整型按字符数据输出,也可以把字符按整型数据输出比如;

#include<stdio.h>
void main()
{
   char a,b; //定义字符类型变量a和b
   a='x';    //把字符‘x’赋给a,此时a的整型值为字符‘x’所对应的值,即120
   b='y';     //把字符'y' 赋给b,此时b的整型值为121
   a=a-32;    //此时的a的值为88,而对应的字符是大写的X
   b=b-32;   //此时的b的值为89,对应的字符是大写的Y
   printf("%c,%c\n%d,%d\n",a,b,a,b); //分别用字符和整型输出a和b 的值
}


C语言学习笔记-----数据类型大集合_C语言 数据类型 int float c_03

3  从上述程序中也可以看出,字符是可以参与运算的,比如:a=A+32

7.字符型数据之字符串常量

(1)字符串常量是由一对双引号括起来的字符序列。比如:  china,  &12.5654

(2)定义char string=My name is zhaoyuqiang;

(3)字符与字符串的区别:

    a、‘a’是字符,“a”是字符串。

    b、“a=a+\0.。 意思是说,字符串就是多个字符合起来,然后最后加一个空格符。

       也就是字符串常量占的内存空间字节数等于字符串中字符位数加1,增加的那一个字符就是存放空字符‘\0’的。

    cchar a=ab; b=a; //把一个字符常量赋给了一个字符变量,这是完全可以的。

       char string=asdfg,b; b=a;  //把一个字符串常量赋给了一个字符变量,这是错误的。  

8.枚举类型

(1)枚举类型:这种类型变量的取值只能限于事前已经一一列举出来的值的范围。

2)用关键字enum定义枚举类型。

        enum weekday {sun,mon,tue,wed,thu,fri,sat};

weekday是枚举类型名,可以用于定义变量,比如:enum weekday week1,week2;定义了两个枚举变量,这两个变量只能取sunsat这个七个值之一,比如:week1=wed;

其中sun,mon....称为枚举元素,这是常量。

3枚举元素在C编辑器中,按定义时的排列顺序取值0,1,2,3,.........比如:

          week1=wed;

           printf(%d,week1);

       此时输出的结果是:3,因为wedweekday中下标是3

4)枚举元素既然是常量,就不应该给它赋值。比如sun=1,mon=2;这是错误的。

       但是在定义的时候可以进行初始化。比如:

         Enum weekday {sun=7,mon=1,tue,wed,thu,fri,sat};

     此时,tuewed....的值从mon的值顺序加1,如,tue=2