目录
数据类型和运算
int类型变量的赋值
double类型变量的赋值
类型转换
转换说明
进行整数/整数之间的操作时,商的小数部分会被舍弃,而在double类型中小数部分则会被保留,这在前面已经讲到,有一点需要注意:
由于%本身的特性决定了它们之间只能是整数之间的运算,而不适用于浮点数。
当不是整数/整数的运算时,比如是int/double这样的情况int类型的操作数会进行隐式类型转换,自动向上转型为double,运算之间就变为了double类型之间的运算。
我们用下面这张图来解释:
当然,这样的运算也适用于其他运算法则。
注意:
运算对象,即操作数的类型不同时,较小数据类型的操作数会转化为较大类型的操作数(范围更大),然后进行运算。
所谓较大的数据类型,并不是指double类型就比int类型更大,而是说它还可以保存小数点以后的部分。
接下来我们用程序来检验这一内容:
#include
int main()
{
int n1, n2, n3, n4;
double d1, d2, d3, d4;
n1 = 5 / 2 ;
n2 = 5.0 / 2.0;
n3 = 5.0 / 2;
n4 = 5 / 2.0;
d1 = 5 / 2 ;
d2 = 5.0 / 2.0;
d3 = 5.0 / 2;
d4 = 5 / 2.0;
printf("n1 = %d\n", n1);
printf("n2 = %d\n", n2);
printf("n3 = %d\n", n3);
printf("n4 = %d\n\n", n4); // 两个\n是为了输出空行
printf("d1 = %f\n", d1);
printf("d2 = %f\n", d2);
printf("d3 = %f\n", d3);
printf("d4 = %f\n", d4);
return 0;
}
为int类型变量的赋值会自动舍弃小数部分,比如2.5会被赋值为2。
为double类型变量赋值会保存小数部分,即使赋值为整数也会转为为带小数的数值,比如2被赋值为2.0.
我们先编写一段程序,观察一下与上章节有何不同?
#include
int main()
{
int a, b;
puts("请输入两个整数:");
printf("整数1:"); scanf("%d", &a);
printf("整数2:"); scanf("%d", &b);
printf("这个整数的平均值是%f。\n", (a + b) / 2.0);
return 0;
}
让我们来看下求均值表达式(a + b) / 2.0,在括号内时(int+int)类型所得结果自然也是int类型整数,进行下一步除法运算时为int/double,发生了隐式类型转换。
例如,(int)3.14转换为对应数据类型的3。(double)2转换为对应数据类型的2.0。
接下来我们用代码演示一遍:
#include
int main()
{
int a, b;
puts("请输入两个整数:");
printf("整数1:"); scanf("%d", &a);
printf("整数2:"); scanf("%d", &b);
printf("这个整数的平均值是%f。\n",(double) (a + b) / 2.0);
return 0;
}
这样的类型转换就称为显示转换(cast),“()”称为类型转换运算符。
类型转换运算符 (数据类型)a 把a转换为对应的数据类型 |
在求取a是b的百分之几是也可以采用类型转换运算符
读取三个整数显示它们的话以及平均数,与前面程序一样在求取平均时发生了类型转换。
#include
int main()
{
int a, b, c;
int sum;
double ave;
puts("请输入三个整数:");
printf("整数a:"); scanf("%d", &a);
printf("整数b:"); scanf("%d", &b);
printf("整数c:"); scanf("%d", &c);
sum = a + b + c;
ave = (double) sum / 3;
printf("它们的和是%5d\n。", sum );
printf("它们的平均值是%5.1f。\n", ave);
return 0;
}
%5d——显示至少五位的十进制数(字符宽度)
%5.1f——至少显示五位的浮点数,小数点只显示一位。
接下来我们对这部分进行更详细地讲解
A0标志:设置了0标志后,数值的前面有空余位则用0补齐,负责就是用空白位补齐。
B最小字符宽度:至少显示的字符位数。不设定位数或当显示数值的实际位数超过设置的位数时,会根据数值显示出必要的位数。
C精度:指定显示的最小位数,当为整数时为1,当为浮点数时默认为6。
D转化说明符:d—显示的是int整形数。
f—显示十进制的是double型浮点数。
这里只介绍部分,关于后续printf函数会继续讲解。
下一章节我们会对运算与数据类型进行总结,只有及时的温故才能更好的知新!
关注我,持续为您带来更加优质的内容!