本帖最后由 736010695 于 2014-11-10 10:34 编辑
运算时数据类型转换:
/*先简单交代下C语言的运算:C语言一共有34中运算符,包括了常见的“+、-、*、 /"算术运算,还有取余运算:%,加减乘除和我们小学课本学的一样,不用多说。取余运算符是:%,就是计算两个整数相除以后的余数,%两侧只能是整数,输出的值的正负型由%左侧整数的正负型决定,例:int a=10%3输出结果是1,如 果是int a=-10%3输出结果是-1*/
//1、自动转换;2、强制转化;
//自动类型转换
int a=10.5;
/*这个输出的结果是10,因为10.5是个小数而不是整数,输出时会自动将其转换成整数输出*/
//强制类型转换
int b=(int)10.5;
/*这个输出结果是10,因为(int)表示强制转化小数10.5为整 数,然后再输出*/
/*类型提升:
自动提升类型(把小类型提升为大类型):运算符号"+、-、*、/”左右两个数应该是同一类型,如果分属不同类型是输出时会自动提升数据类型,把小类
double c=10.6+6;//自动提升类型,所以输出结果是16.600000
/* 这个运算结果是16.600000,但是在c语言中,运算符号"+、-、*、/”左右两个数应该是同一类型,现在10.6是小数(8个字节的存储空间),而6是整 数(4个字节存储空间),分属不同类型,但是输出时会自动提升数据类型,把6(6是整数只有4个字节)变成6.0(8个字节),结 果是16.600000*/
double c=3.0/2; //自动提升类型,所以输出结果是1.500000
double d=(double)3/2; //强制转换类型,所以输出结果是1.500000
double e=(double)(3/2); //这个虽然有(double)强制提升类型,但是由于(3/2)现在是个整体由于两个整型数据计算后的结果是1,整型1强制提升double数据后输出结果为1.000000
double f=3/2;//因为3和2都是整型数据,所以输出结果也是整型,结果为1*/
//参与运算的两个数据是什么类型,得出的结果就是什么类型
//参与运算的数据必须是统一类型,否则输出时会做自动类型提升(把小类型提升为大类型)
|