| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 772 人关注过本帖
标题:c++程序int main()没有返回值却能运行的情况,求分析!
只看楼主 加入收藏
xiaodu000
Rank: 2
来 自:黑龙江七台河
等 级:论坛游民
帖 子:52
专家分:42
注 册:2013-10-15
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:10 
c++程序int main()没有返回值却能运行的情况,求分析!
编写一个程序,键盘输入一个偶数,输出偶数为两个素数之和。
#include<iostream>
using namespace std;

int sushu(int n)
{
    int i;
    for(i=2;i<=n;i++)
    if(n%i==0) break;
    if(n==i)
    return 1;
    else
    return 0;
}
int main()
{
    int j,n;
    while(cin>>n&&n%2==1)
    cout<<"请输入大于2的偶数"<<endl;
    for(j=2;j<n/2;j++)
    if(sushu(j)&&sushu(n-j))
    cout<<j<<"+"<<n-j<<"="<<n<<endl;
}
我试过了,可以运行,但是没有返回值应该试报错的啊,求分析!
控制台截图
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 键盘 
2013-11-01 21:28
yss28
Rank: 2
等 级:论坛游民
帖 子:16
专家分:76
注 册:2013-3-16
收藏
得分:2 
int main() 可以不写返回值,但不代表它没有返回值。
如果你不写返回值,编译器会自动给你补上(只对于main)。方便些而已
2013-11-01 21:45
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:2 
没有返回值,那么返回值就是随机数字了,原来ax(eax)是什么数据就返回什么。

没有返回值有些编译器是不能通过的

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-11-02 07:57
xiaodu000
Rank: 2
来 自:黑龙江七台河
等 级:论坛游民
帖 子:52
专家分:42
注 册:2013-10-15
收藏
得分:0 
,除此之外,编译器还能自动补上什么东西呢

写问题的同学不要手懒,有时候编译器说的东西胜过任何大牛!
2013-11-02 08:20
i80286
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:99
专家分:428
注 册:2013-9-30
收藏
得分:2 
编译器能补的未必是正确的,即便编译能过(比如一些警告错误),但不表示程序能正常运行或者说能得到你想要的结果
2013-11-02 08:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:2 
2楼说得不错,因为C99规定main在无return的分支自动等效于添加了return 0,原文如下
…… reaching the } that terminates the main function returns a value of 0. ……

而C++标准对于这种C中无伤大雅的规定,一般是能兼容C就兼容C。
2013-11-02 09:57
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
收藏
得分:0 
编译器的问题。
2013-11-02 12:20
xiaodu000
Rank: 2
来 自:黑龙江七台河
等 级:论坛游民
帖 子:52
专家分:42
注 册:2013-10-15
收藏
得分:0 
哦,理解了,这个是c++标准中规定的,我可以这样理解吗,编译器都遵守不同的标准

写问题的同学不要手懒,有时候编译器说的东西胜过任何大牛!
2013-11-02 14:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:2 
以下是引用xiaodu000在2013-11-2 14:11:03的发言:

哦,理解了,这个是c++标准中规定的,我可以这样理解吗,编译器都遵守不同的标准

不能说“编译器都遵守不同的标准 ”,因为世上只有一个标准。
但有的编译器比较古老,开发这个编译器时新标准还未出台;
有的编译器虽然是最新的,但开发者因为各种原因导致其对新标准支持不力。
2013-11-02 14:29
xiaodu000
Rank: 2
来 自:黑龙江七台河
等 级:论坛游民
帖 子:52
专家分:42
注 册:2013-10-15
收藏
得分:0 
了解了

写问题的同学不要手懒,有时候编译器说的东西胜过任何大牛!
2013-11-02 17:06
快速回复:c++程序int main()没有返回值却能运行的情况,求分析!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029070 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved