| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1040 人关注过本帖
标题:新人不解。一些迷惑的问题。。。
只看楼主 加入收藏
huayasong
Rank: 2
来 自:江苏东台
等 级:论坛游民
帖 子:33
专家分:16
注 册:2011-1-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:17 
新人不解。一些迷惑的问题。。。
#include "stdio.h"
  int main(void)
  {
    printf("你好,C!\n");
    return 0;
   }

以上代码中的最后一部分“return 0;”是否可以不写?
为什么我不写。输出结果也是一样?

请问不写不写有什么区别?

另外一点代码的前端部分 “int ain(void)” 是否可以写成“viod main”

以上问题是我从两个不同的地方看到的。其结果都是一样。很是迷惑。
搜索更多相关主题的帖子: include return 
2011-01-26 15:30
yellowcat
Rank: 2
等 级:论坛游民
帖 子:10
专家分:13
注 册:2011-1-25
收藏
得分:10 
可以不写,int main()的意思就是main函数返回值类型为int,return 0就是返回值设为0
因为这个返回值事实上你不可能用到,所以随便怎么写都没关系,不写也没关系。(C里面可以调用main函数,C++里面直接不可以了)
void main也行,意思是main函数不返回任何东西.
其实直接写
#include "stdio.h"
main()
{
    printf("你好,C!\n");
}
这样就ok了。

PS:啊,这样C++编译不通过,C编译通过
难道C++必须要有个函数返回类型才行么
那么main前面随便加个类型就行了
#include "stdio.h"
void main()
{
    printf("你好,C!\n");
}
#include "stdio.h"
int main()
{
    printf("你好,C!\n");
}
#include "stdio.h"
char main()
{
    printf("你好,C!\n");
}
什么的,都行,一般写void

[ 本帖最后由 yellowcat 于 2011-1-26 15:43 编辑 ]
2011-01-26 15:38
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
好像更常见的是void main(),这时候的话没有return语句程序既无警告又无错误。
若是int main()的话,需要return语句;若无return语句,程序会警告,但不影响结果。

关键之处是main()前面是否是void,void就不需要返回值


[ 本帖最后由 qhxxbc 于 2011-1-26 16:34 编辑 ]

非计算机专业自学新手向大家请教
2011-01-26 15:41
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:0 
#include "stdio.h"
  int main(void)
  {
    printf("你好,C!\n");
    return 0;
   }
建议以后都这样写,像二楼说的,那种写法,在vc6.0就通过不了了。
楼主你那样写,几乎在哪个编译器都能通过。
那个迷惑,二楼的讲得差不多了。。。

勤能补拙,熟能生巧!
2011-01-26 15:43
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:10 
楼主:
关键的问题是:函数的返回值通常是被“主调函数”(就是调用它的函数)使用的,比如:
float s;
s = sqrt(2.0) * 3;//这里,sqrt()的返回值参与了后期的乘法和赋值运算
那么,main()的返回值交给了谁?谁能使用,以及怎么使用main()的返回值?这个问题才是困扰中国大学生的关键问题。
早期计算机教学使用DOS环境,要讲DOS命令,命令行,命令行参数,等等概念;而现在的C语言授课环境很多都是Window这个“傻瓜系统”了,就算少数依然用TC教C语言的老师,也不可能讲授Window命令行的知识了。这使得绝大多数初学C语言的学生对命令行的概念基本不知道,更不要说批处理这样的知识了。不要以为我跑题了,这正是问题的关键。
有个问题是:楼主,当你在你的C语言环境中编写完程序,按ctrl+F9或F5执行程序的时候,到底是谁在调用main()呢?
请回答。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-01-26 15:52
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:0 
另外,3楼的兄弟,你的认识是有问题的,是有害的(虽然很多教科书都那样写,但是,这不是正确的理论,也不是良好的编程习惯)。
在C语言中,一个函数若不声明其函数返回值类型,则C语言默认其返回值类型为int!
而函数若没有明显声明为void(无返回值),则要求函数必须以“return 表达式;”语句作为整个函数的结束,而且表达式的类型还必须与所声明的函数返回值类型保持一致。
这是函数的基本概念和要求。
另外,记住我的一句话:“书是人编的,不是神编的!”

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-01-26 15:57
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
以下是引用犬虫门心在2011-1-26 15:57:23的发言:

另外,3楼的兄弟,你的认识是有问题的,是有害的(虽然很多教科书都那样写,但是,这不是正确的理论,也不是良好的编程习惯)。
在C语言中,一个函数若不声明其函数返回值类型,则C语言默认其返回值类型为int!
而函数若没有明显声明为void(无返回值),则要求函数必须以“return 表达式;”语句作为整个函数的结束,而且表达式的类型还必须与所声明的函数返回值类型保持一致。
这是函数的基本概念和要求。
另外,记住我的一句话:“书是人编的,不是神编的!”

可以详细介绍一下什么是函数返回值吗?举个例子最好!还有就是函数返回值有什么用呢?

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-01-26 16:28
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
以下是引用犬虫门心在2011-1-26 15:57:23的发言:另外,3楼的兄弟,你的认识是有问题的,是有害的(虽然很多教科书都那样写,但是,这不是正确的理论,也不是良好的编程习惯)。在C语言中,一个函数若不声明其函数返回值类型,则C语言默认其返回值类型为int!而函数若没有明显声明为void(无返回值),则要求函数必须以“return 表达式;”语句作为整个函数的结束,而且表达式的类型还必须与所声明的函数返回值类型保持一致。这是函数的基本概念和要求。另外,记住我的一句话:“书是人编的,不是神编的!”
可以详细介绍一下什么是函数返回值吗?举个例子最好!还有就是函数返回值有什么用呢?

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-01-26 16:32
丞相杀手
Rank: 6Rank: 6
等 级:侠之大者
帖 子:203
专家分:462
注 册:2011-1-11
收藏
得分:0 
主函数的返回值用来告诉操作系统程序是怎样结束的,return 0 表示正常结束,其他的楼主到百度谷歌里面找吧

斗不过疯子,不参与争论。
2011-01-26 16:38
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:0 
langjinchao,你应该知道sqrt()函数的意义吧?就是求算术平方根。
我写一段代码给你看看:
double r, s;
scanf("%lf", &r);//从键盘输入一个数(实数)
s = sqrt(r);//求这个实数的算术平方根
printf("%lf\n", s);//输出这个算术平方根
上面是所谓的库函数返回值的例子,下面给一个用户自定义函数(我们自己写的函数)的例子:
int add(int, int); //这是函数声明

int add(int a, int b) //这是函数首部,里面有很重要的所谓的“形参”
{
    int c;

    c = a + b;

    return c; //这就是函数返回值
}

void main(void)
{
    int m, n, t;

    scanf("%d%d", &m, &n); // 从键盘输入两个数
    t = add(m, n); //下划线的部分,这是所谓的函数调用,而返回值就是m和n的和值,就是由add()实现的。
}

函数add()中的return有下面3个方面的含义:
1、结束add()的运行;
2、回到调用add()的“主调函数”,在这个例子中是main();
3、用“return 表达式;”中表达式的值,替换主调函数中的“add(m, n)”以便参加后续运算。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-01-26 16:47
快速回复:新人不解。一些迷惑的问题。。。
数据加载中...
 
   



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

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