还是C语言的问题
main()
{
int r;
float a,b;
scanf("%d",&r);
a=2*r*3.14;
b=3.14*r*r;
printf("zhouchang is %f %f",a,b);
getch();}
这样运行 我输入R=3
圆的周长是18.84 面积是28.26 这样没错
但是为什么 我这样输入
main()
{
int r;
float a,b;
a=2*r*3.14;
b=3.14*r*r;
scanf("%d",&r);
printf("zhouchang is %f %f",a,b);
getch();}
R=3 圆的周长是11454.719727 面积是10446705.000000000
明显不对啊
这是为什么呢 既然不对 为什么不报错呢
答案:因为没有编译错误,所以并不报错
这里结果错误,是因为逻辑上的错误
C/C++的运行是自上而下的运行的,
可以说是面向过程的特点
所以看下面的程序,
在给r赋值之前就进行运算,
系统找不到r的值,所以把错误的运算结果赋值给了a和b
下面再给r赋值的时候,并不会回过头去重新运算a和b
所以输出结果并不是你想要的
其他:a=2*r*3.14;
b=3.14*r*r;
scanf("%d",&r);
交换为
scanf("%d",&r);
a=2*r*3.14;
b=3.14*r*r;
你按上面的顺序 编译能通过 但是因为各个变量都有定义
但是没有确定的值 到运行的时候 系统就随便给a b赋值了 变量定义完要初始化,否则直接拿来用结果是不可测的
上一个:c语言错误
下一个:c语言高手进