博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言程序设计谭浩强版 四
阅读量:4204 次
发布时间:2019-05-26

本文共 1295 字,大约阅读时间需要 4 分钟。

3.6  变量赋初值

语言程序中可有多种方法为变量提供初值。本小节先介绍在作变量定义的同时给变量赋以

初值的方法。这种方法称为初始化。变量初始化不是在编译阶段完成的,而是在程序运行

时执行本函数时赋予初值的。

在变量定义中赋初值的一般形式为:类型说明符变量1= 值1,变量2= 值2,……;

例如: int a=3;

            int b,c=5;

            float x=3.2,y=3f,z=0.75;

            char ch1='K',ch2='P';

应注意,在定义中不允许连续赋值,如a=b=c=5是不合法的。

3.7 各类数值型数据之间的混合运算

变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转换。

自动转换遵循以下规则:

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

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

         先把int量转成long型后再进行运算。

3) 、所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,

        也要先转换成double型,再作运算。

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

5) 、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为

        左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这

        样会降低精度,丢失的部分按四舍五入向前舍入。

下图表示了类型自动转换的规则:

#include
/* 数据类型的自动转换 */int main(void){ float PI = 3.14159; int s,r = 5; s = r * r * PI; printf("%d\n",s);}

本例中,计算S的时候需要将r和PI都转换为double型,但是由于s是整型,所以输出的

时候舍弃小数部分,直接输出整数78,不是四舍五入。

强制类型转换

其一般形式为: (类型说明符) (表达式)

例如: (float) a 把a转换为实型                (int)(x+y) 把x+y的结果转换为整型

在使用强制转换时应注意以下问题:

1) 、类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成

        (int)x+y则成了把x转换成int型之后再与y相加了。

2) 、无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度

        进行的临时性转换,而不改变数据说明时对该变量定义的类型。

下面我们举个例子来说明一下强制转换数据类型

#include
/* 强制类型转换 */int main(void){ float f = 5.75; printf("(int)f = %d,f = %f\n",(int)f,f);}

输出结果为:(int) f = 5,f = 5.750000

本例表明,f虽强制转为int型,但只在运算中起作用,是临时的,而f本身的类型并

不改变。因此,(int)f的值为5(删去了小数)而f的值仍为5.75。


你可能感兴趣的文章