目录

数据类型和运算

 int类型变量的赋值

double类型变量的赋值

类型转换

转换说明


数据类型运算

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

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

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

我们用下面这张图来解释

033a9cf6657e4c4881acf265e8895e33.png

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

注意:

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

 所谓较大的数据类型,并不是指double类型就比int类型更大,而是说它还可以保存数点以后的部分

接下来我们程序检验这一内容

#include<stdio.h>

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 = %dn", n1);
	printf("n2 = %dn", n2);
	printf("n3 = %dn", n3);
	printf("n4 = %dnn", n4);  //  两个n是为了输出空行

	printf("d1 = %fn", d1);
	printf("d2 = %fn", d2);
	printf("d3 = %fn", d3);
	printf("d4 = %fn", d4);

	
	return 0;
}

 int类型变量赋值

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

double类型变量赋值

double类型变量赋值保存小数部分,即使赋值为整数也会转为为带小数的数值比如2被赋值为2.0.

类型转换

我们编写一段程序,观察一下与上章节有何不同

#include<stdio.h>

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<stdio.h&gt;

int main()
{
	int a, b;
	
	puts("请输入两个整数:");
	
	printf("整数1:");            scanf("%d", &amp;a);
	
	printf("整数2:");            scanf("%d", &amp;b);
	
	
	
	printf("这个整数的平均值是%f。n",(double) (a + b) / 2.0);
	
	
	return 0;
}

这样的类型转换称为显示转换cast),“()”称为类型转换运算符

类型转换运算符
类型转换运算符              (数据类型)a                   把a转换对应数据类型

在求取a是b的百分之几是也可以采用类型转换运算符

960c939d2dd74c87afa4131c5a8bebae.png

转换说明

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

#include<stdio.h&gt;

int main()
{
	int a, b, c;
    int sum;
	double ave;
	
	puts("请输入三个整数:");
	
	printf("整数a:");            scanf("%d", &amp;a);
	
	printf("整数b:");            scanf("%d", &amp;b);
	
	printf("整数c:");            scanf("%d", &amp;c);

	sum = a + b + c;
	ave = (double) sum / 3;
	
	printf("它们的和是%5dn。", sum );
	printf("它们的平均值是%5.1f。n", ave);
	
	
	return 0;
}

%5d——显示至少五位的十进制数(字符宽度

%5.1f——至少显示五位的浮点数,小数点显示一位。

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

9a56432e31b345c686756e2e43d78623.png

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

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

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

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

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

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

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

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

原文地址:https://blog.csdn.net/W06164932/article/details/134664189

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44326.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注