输入和输出格式说明符一定要对!
公众号:C语言编程技术分享
一、先找茬儿
有这么个练习,说是让你输入两个数字,再计算它们的商并输出,看起来很简单是不,我是这么写的,如下:
#include <stdio.h>
int main()
{
double v1, v2, v3;
printf("请输入两个小数: ");
scanf("%d,%d", &v1, &v2);
v3 = v1 / v2;
printf("v3的值是: %d\n", v3);
system("pause");
return 0;
}
来,运行一把,如下:
呦呵,这咋回事儿,我输入俩数字4和2,两数相除商是0?小伙伴们先来找找茬儿,看看哪里错了?
二、茬儿解析
变量v1和v2的类型是double,使用scanf函数读入两数的值的时候,格式说明符用的是“%d”,这可是要读入int类型的意思啊!
然后输出商的时候,printf函数格式说明符用的也是“%d”,这是要输出int类型的数据啊?
这么一搞,变量v1,v2,v3的精度都大大损失,不是0才怪!
三、修正茬儿
只要把输入和输出的类型改过来就可以啦,小伙伴们可以自己试试。有问题可以留言哦!