变量赋初值
在编写程序的过程中常需要对一些变量预先设置初值,C语言允许在给定义变量的同时给变量赋初值 有以下几种述职方式
int x=5;
定义x为有符号的基本整型变量,赋初值为5
int x,y,z=6;
定义x,y,z为无符号基本整型变量,z赋初值为6
int x=4,y=4,z=4
定义x,y,z为无符号基本整形变量,初值均为4
类型转换
变量的数据类型可以转换,方法有两种,一种是自动转换,一种是强制转换
1.自动转换
自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成,自动转换遵循以下规则
若参与运算的量类型不同,则先转换成同一类型,然后进进行计算
转换按照数据长度增加的方向进行,确保精度不会降低,比如int和lang类型的数据进行运算时,先把int转换成lang型之后再进行运算
所有的浮点运算都是以双精度进行的,即使含float单精度量的表达式,也要先转换成double型,再进行计算。
Char型和short型参与运算时,必须先转换成int型
在赋值运算中,赋值号两边的量的数据类型不同时,赋值号右边俩的类型将转换成左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,从而降低精度;丢失的部分按四舍五入向前舍入
例子
Char a;
Int b;
Long int c;
Float d;
Double e;
Result=(a+b)*(c-a)/(d/e)
转换关系如下图
2强制转换
强制转换是通过类型转换运算来实现的。一般形式如下
【类型说明符】【表达式】
其功能是把表达式运算结果强制转换成类型说明符所表示的类型,如
(float) x;
表示把x转换成单精度型
(int) (x+y);
表示把x+y的结果转换成整数
(类型说明符必须加括号),(int)x,强制类型转换后不改变数据声明时对该变量定义的类型。
强制类型转换应用
#include<stdio.h>
Main()
{
Float a,b;
Int c;
Printf(“please input :\n”);
Scanf(“%f,%f”&a,&b);
C=(int) i%(int)j;
Printf(“%d”,c);
}
如果将C=(int) i%(int)j;
改为 I % j;
会直接报错 取余运算符两侧只能是整数