C语言之数据类型(2)

目录

数据类型和运算

 int类型变量的赋值

double类型变量的赋值

类型转换

转换说明


数据类型和运算

进行整数/整数之间的操作时,商的小数部分会被舍弃,而在double类型中小数部分则会被保留,这在前面已经讲到,有一点需要注意:

由于%本身的特性决定了它们之间只能是整数之间的运算,而不适用于浮点数。

当不是整数/整数的运算时,比如是int/double这样的情况int类型的操作数会进行隐式类型转换,自动向上转型为double,运算之间就变为了double类型之间的运算。

我们用下面这张图来解释:

C语言之数据类型(2)_第1张图片

当然,这样的运算也适用于其他运算法则。

注意:

运算对象,即操作数的类型不同时,较小数据类型的操作数会转化为较大类型的操作数(范围更大),然后进行运算。

 所谓较大的数据类型,并不是指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类型变量的赋值

为int类型变量的赋值会自动舍弃小数部分,比如2.5会被赋值为2。

double类型变量的赋值

为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,发生了隐式类型转换。

7bd73286008941d78c662fcd3f2e63f5.png

例如,(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的百分之几是也可以采用类型转换运算符

960c939d2dd74c87afa4131c5a8bebae.png

转换说明

读取三个整数显示它们的话以及平均数,与前面程序一样在求取平均时发生了类型转换。

#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——至少显示五位的浮点数,小数点只显示一位。

 接下来我们对这部分进行更详细地讲解

C语言之数据类型(2)_第2张图片

A0标志:设置了0标志后,数值的前面有空余位则用0补齐,负责就是用空白位补齐。

B最小字符宽度:至少显示的字符位数。不设定位数或当显示数值的实际位数超过设置的位数时,会根据数值显示出必要的位数。

C精度:指定显示的最小位数,当为整数时为1,当为浮点数时默认为6。

D转化说明符:d—显示的是int整形数。

                        f—显示十进制的是double型浮点数。

这里只介绍部分,关于后续printf函数会继续讲解。

下一章节我们会对运算与数据类型进行总结,只有及时的温故才能更好的知新!

关注我,持续为您带来更加优质的内容!

你可能感兴趣的:(C语言,c语言,开发语言,算法,学习,c++,数据结构)