C语言程序设计谭浩强版 四

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) 、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为

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

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

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

<span style="font-size:18px;">#include<stdio.h>
/* 数据类型的自动转换 */
int main(void)
{
	float PI = 3.14159;
	int s,r = 5;
	s = r * r * PI;
	printf("%d\n",s);
}
</span>


本例中,计算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) 、无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度

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


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


<span style="font-size:18px;">#include<stdio.h>
/* 强制类型转换 */
int main(void)
{
	float f = 5.75;
	printf("(int)f = %d,f = %f\n",(int)f,f);
}</span>


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


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

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章