当前位置:编程学习 > C/C++ >>

还是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语言高手进

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,