今天编程时有如下代码:
#include"stdio.h" int main(void) { double profit; double bonus; printf("请输入本月利润\n"); scanf("%f",&profit);//错误:此行profit是double类型,格式符为%f,当输入8时,profit的值为0 if(profit<=10.0) { bonus = profit*0.1; } else if(profit>10.0&&profit<=20.0) { bonus = 10*0.1 + (profit-10)*0.75; } else if(profit>20.0&&profit<=40.0) { bonus = 10*0.1+10*0.75+(profit-20)*0.05; } printf("您本月的奖金为:%.5f千\n",10*bonus); return 0; }
printf("请输入本月利润\n");
执行到: scanf("%f",&profit);时,由于profit是double类型,其占位符因该是%lf,而我写成了float的占位符%f,当键盘上输入8后,profit的值是0,故最后输出也是0。
有明白两者原因的大佬请评论区解答一下。