主题:为什么在vc++中编译没有错误 可是不能运行
星座天蝎
[专家分:0] 发布于 2011-01-29 17:38:00
编译没有错误 可是不能运行
回复列表 (共10个回复)
沙发
强强 [专家分:4740] 发布于 2011-01-30 00:56:00
就象是一个小孩,把他生下来没问题(相当于编译),但是这个孩子却做了不该做的事,比如说吃喝嫖赌坑蒙拐骗之类的事(相当于运行时非法内存访问或对系统资源消耗过大或死循环等等),所以就把他抓起来关进监狱(操作系统弹出对话框提示程序非法操作,并中止该程序或者程序无响应),原因就是家长没教育好他(相当于你代码编写有错误)
板凳
星座天蝎 [专家分:0] 发布于 2011-01-30 15:47:00
可是 用vc++编写后 没有错误 然后运行 它就弹出无法运行程序
3 楼
星座天蝎 [专家分:0] 发布于 2011-01-30 16:11:00
#include <stdio.h>
main()
{
float a,b;
printf("chengji1=");
scanf("%f",&a);
printf("chengji2=");
scanf("%f",&b);
printf("zongfen=%f\npingjunfen=%f",a+b,(a+b)/2);
getch();
}
0 error(s),0warning(s)
可是一运行就是无法执行程序
4 楼
windy0will [专家分:2300] 发布于 2011-01-30 18:23:00
[quote]就象是一个小孩,把他生下来没问题(相当于编译),但是这个孩子却做了不该做的事,比如说吃喝嫖赌坑蒙拐骗之类的事(相当于运行时非法内存访问或对系统资源消耗过大或死循环等等),所以就把他抓起来关进监狱(操作系统弹出对话框提示程序非法操作,并中止该程序或者程序无响应),原因就是家长没教育好他(相当于你代码编写有错误)[/quote]
强强兄的解释,形象生动。
5 楼
windy0will [专家分:2300] 发布于 2011-01-30 18:31:00
把float a, b;改为double a, b;看行么?我回家了,没电脑不能检验。如果是行的话,错误原因可能是scanf函数的%f需要double数据,float数存不下一个double数。
6 楼
星座天蝎 [专家分:0] 发布于 2011-01-31 16:33:00
还是无法执行程序~~~ 我都写了十个 可是就只有一个可以运行的 楼上楼的 两位老兄说得很好 可是要怎么解决啊
7 楼
eastcowboy [专家分:25370] 发布于 2011-01-31 18:38:00
#include <stdio.h>
int main()
{
float a,b;
printf("chengji1=");
scanf("%f",&a);
printf("chengji2=");
scanf("%f",&b);
printf("zongfen=%f\npingjunfen=%f",a+b,(a+b)/2);
}
运行了,没有问题的。(我用的Visual Studio 2010,但相信其它版本的VC也应该一样)
输入:10<换行>20
输出:
chengji1=10
chengji2=20
zongfen=30.000000
pingjunfen=15.000000
windy0will同学说scanf的%f需要double类型,其实不是的。scanf的%f需要float,%lf才需要double。这跟printf不同,printf的%f和%lf可以混用,因为float也会先转化为double,再输出。
8 楼
windy0will [专家分:2300] 发布于 2011-02-01 09:02:00
[quote]#include <stdio.h>
int main()
{
float a,b;
printf("chengji1=");
scanf("%f",&a);
printf("chengji2=");
scanf("%f",&b);
printf("zongfen=%f\npingjunfen=%f",a+b,(a+b)/2);
}
运行了,没有问题的。(我用的Visual Studio 2010,但相信其它版本的VC也应该一样)
输入:10<换行>20
输出:
chengji1=10
chengji2=20
zongfen=30.000000
pingjunfen=15.000000
windy0will同学说scanf的%f需要double类型,其实不是的。scanf的%f需要float,%lf才需要double。这跟printf不同,printf的%f和%lf可以混用,因为float也会先转化为double,再输出。[/quote]
非常感谢eastcowboy前辈耐心指出错误。确实是我记错了。
9 楼
星座天蝎 [专家分:0] 发布于 2011-02-01 15:29:00
7楼的 大哥 那为什么我的vc++6.0专用版 还是显示无法执行程序啊????????
10 楼
eastcowboy [专家分:25370] 发布于 2011-02-01 20:11:00
我确实没有看出有什么问题。
顺便说一下,微软已经抛弃VC++ 6.0了。似乎还在网上说过类似“因为使用VC++ 6.0,造成任何问题概不负责”的话。
其实找一个好用的VC很容易。微软放出了一些免费版的VC,虽然少了一些功能(比如MFC和ATL),但其实已经够用了。不论是初学者,还是真正工作,都够用了。目前主要推荐2008和2010两个版本,2008其实是VC++ 9.0,2010其实是VC++ 10.0。两个都不错。
下载地址:[url]http://www.microsoft.com/express/Downloads/[/url],里面可以选择Visual Studio 2008 Express SP1和Visual Studio 2010 Express,都有中文/英文版本,而且都是免费的。刚安装的时候似乎有30天的使用限制,但免费注册之后就可以永久使用了。
我来回复