#数值类型不可忽视

这几天突然很在意关于数值类型这个问题,因为自己在编程中连续几次因为忽视数值类型而出错,所以我觉得这个东西还是很有必要讲一讲的。
因为自己还是初学者,所以仅仅说说目前自己所了解的几个常见的数值类型转换的问题,不足的地方也希望大佬帮我补充。

#include <stdio.h>
void main()
{
	int a=1,b=2;
	float c;
	c=a/b;
	printf("%.2f",c);
}


显然虽然有令float c,但是最终答案并不是0.50,而是0.00。这是因为在编译时那warning便是原因,数据丢失。
但是如果我们稍作更改,让右边的也是float类型的运算,

#include <stdio.h>
void main()
{
	float a=1,b=2;
	float c;
	c=a/b;
	printf("%.2f\n",c);
}

在这里插入图片描述
显然这次答案便是正确的,当然我们也可以不做替换进行强制转换(c99貌似不行),比如

#include <stdio.h>
void main()
{
	int a=1,b=2;
	float c;
	c=(float)a/b;
	printf("%.2f\n",c);
}

在这里插入图片描述
显然答案也是正确的。
那么也就是说对于这种类型转换,一定要保证赋值左右两方的类型相同才不会出错。
但是反过来想想,如果上面赋值时左右类型互换一下呢,大家可以自己试试,其实原理时一样的 。由于int只取整数部分,所以它的答案当然是0啦。
那么总结一下,大家平时一定要注意一些小细节,warning什么的千万不要放过它就去运行,即使答案正确,也要去分析解决它。
附:说个题外话,也是我最近遇到的小问题,那就是简单的输入输出犯得小错误。
输入时:
int-%d , char-%c, double-%lf, float-%f;
输出时:
都差不多,但double可以用%f输出。
还有字符串中用%s进行输入输出时与用gets puts时相应的区别也要好好牢记!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值