黑马程序员——数据类型、常量、变量

时间:2022-10-29 00:39:17

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、数据类型

  在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。

黑马程序员——数据类型、常量、变量

黑马程序员——数据类型、常量、变量

二、常量

   1.概念

      在程序执行过程中,其值不发生改变的量称为常量。

   2.分类

        1)整型常量:即(int)整数,如2,4,56等等。

    2)浮点型常量:浮点型常量分为double和float两种数据类型。

    • double:双精度浮点型,比如3.14、-5.9,0.0等。
    • float:单精度浮点型,比double所能表示的小数位少。float型数据是以f结尾的,比如3.14f、-5.9f、0.0f。

 3)字符型常量:将(0~9)一个数字、英文字母(a~z、A~Z)或者 其他符号(+、-、!、?等)用单引号括起来,比如'6'、'a'、'F'、'+'、'$'等,需要注意的是一个中文字是不能用单引号括起来的。

 4)字符串常量:将一个或者多个字符用双引号("")括起来,比如"6"、"男"、"哇哈哈"、"abcd"、"my_car4"。

三、变量

   1.概念

  其值可以改变的量称为变量。每个变量都有名字,在内存中占据一定的存储单元。变量定义必须放在变量使用之前,一般放在函数体的开头部分。

2.变量定义形式

    类型说明符  变量名, 变量名, ...;

3.变量的命名规范

  1)严格遵守标识符的命名规范

  2)变量名不能同名

4.变量的赋值

  赋值形式:类型说明符 变量1= 值1, 变量2= 值2, ……;

int a=3;
int b,c=5;
float x=3.2,y=3.0,z=0.75;
char ch1='K',ch2='P';

需要注意的是在定义中不允许连续赋值,如a=b=c=1是错误的。

   5.变量的初始化

     没有初始化,如int a。这样情况下,a值的可能性:1)系统的数据;2)上一个程序的数据;3)垃圾数。初始化的方法就是给变量赋值。

  初始化的方法:

     1)定义的同时初始化

               int a=0,b=0;

     2)先定义后初始化

               int e,f;

                    e=0;

                    f=0;

     3)使用一个变量初始化另外一个变量

               int g=h;

     4)给变量连续初始化

                int i,j,k;

                   i=j=k=1;

   6.变量的作用域

     声明变量的类型不同,其作用域也不同。变量按作用域的范围氛围:局部变量和全局变量。

     1)局部变量:函数内部或代码块的内部定义的变量。

                   {代码块语句1}{代码块语句2}

      需要注意:代码可以嵌套;在代码快内部可以定义和代码块外部同名的变量;一个代码块结束,其内部的变量所占的内存空间被释放,在代码块外部无法访问内部的变量。   

      作用域:从定义开始,到它所在的代码块或函数体“}”为止。

    2)全局变量:在函数的外部定义的变量。

      作用域:从定义开始到文件的末尾,在不同的函数体中都可以使用。

四、数据类型的转换

   数据类型的转换分为:自动转换和强制转换。

   1、自动转换

   在不同数据类型的量混合运算时,自动转换由编译系统自动完成。自动转换规则:

   1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

   2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。

   3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

   4)char型和short型参与运算时,必须先转换成int型。

   5)在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。

转换规则:

            黑马程序员——数据类型、常量、变量

#include<stdio.h>
int main(){
    float PI=3.14159;
    int s,r=5;
    s=r*r*PI;
    printf("s=%d\n",s);
    return 0;
}

  本例程序中,PI为实型;s,r为整型。在执行s=r*r*PI语句时,r和PI都转换成double型计算,结果也为double型。但由于s为整型,故赋值结果仍为整型,舍去了小数部分。

   2.强制转换

     强制类型转换是通过类型转换运算来实现的。其一般形式为:

                                 (类型说明符)  (表达式)

(float) a;  /* 把a转换为实型 */
(int)(x+y);  /* 把x+y的结果转换为整型 */

      注意:无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。