关于打印的问题
#include <stdio.h>#define pai 3.14
int main()
{
int r;
printf("请输入半径:");
scanf("%d", &r);
printf("正在输出结果------------\n");
float c,s;
c = 2*pai*r;
s = pai*r*r;
printf("半径为%f的圆的面积是:%.2f, 周长是;%.2f\n", r, s, c);
return 0;
}
我知道这里上面用的是int 而打印用的是float类型 那为什么 半径这里打印错误会导致后面的面积和周长也打印错误呢
#include <stdio.h>
#define pai 3.14
int main()
{
int r;
printf("请输入半径:");
scanf("%d", &r);
printf("正在输出结果------------\n");
float c,s;
c = 2*pai*r;
s = pai*r*r;
printf("半径为%d的圆的面积是:%.2f, 周长是;%.2f\n", r, s, c);
return 0;
}
改成int 类型 半径 正确打印 后面的面积和周长也正确打印了 ,那到底是为什么会有这样的影响.....
若把%d错写成%f,那么参数就会找错
printf("半径为%f的圆的面积是:%.2f, 周长是;%.2f\n", r, s, c);
格式化字符有三个%f,需要三个浮点数,但是后面有三个参数,第一个是int,会被跳过,把 s 赋值给第一个%f,然后把 c 赋给 %.2f ,最后一个 %.2f ,就没有值了,那么他输出的就可能是一个随机的数值,或者是0.00,这与编译器有关 sunrise085 发表于 2020-9-9 15:39
若把%d错写成%f,那么参数就会找错
printf("半径为%f的圆的面积是:%.2f, 周长是;%.2f\n", r, s, c);
格 ...
那为什么打印出来的 半径并不是对应面积的值 面积也不是对应 周长的值.....
比如我输入5 那么说的话 输出的半径应该对应面积的值是78.5 面积是对应周长的值31.4
但是现在 输入5 输出的半径是0.00000 面积是一大串数字 周长 是0.00 zhangjunxian 发表于 2020-9-9 15:51
那为什么打印出来的 半径并不是对应面积的值 面积也不是对应 周长的值.....
比如我输入5 那么说的话 输 ...
与编译器有关。总之,格式化字符与变量的数据类型不匹配的话,就会出现错误 sunrise085 发表于 2020-9-9 16:01
与编译器有关。总之,格式化字符与变量的数据类型不匹配的话,就会出现错误
好吧,谢谢
页:
[1]