免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4771 | 回复: 20
打印 上一主题 下一主题

一个网友问我的一道面试题.晕 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-29 12:05 |只看该作者 |倒序浏览
问题描述.
请回答如下关于精典的HELLO WORLD的问题.
代码如下:
A)
#include <stdio.h>
main()
{
      printf("hello world!\n");
}

B)
#include <stdio.h>
int main()
{
      printf("hello world!\n");
}

C)
#include <stdio.h>
int main(void)
{
      printf("hello world!\n");
      return 0;
}

D)
#include <stdio.h>
main(void)
{
      printf("hello world!\n");
      return 0;
}

1.分别指出如上代码是否有误,为什么?
2.请根据代码,介绍一下C语言的标准和规范.
3.为什么入口函数可以有这么多种写法?目的是什么?在什么时候可以用这种写法?为什么?哪一种写法最为规范,为什么?
......
后面还有我就不说了,看了会吐血的,谁来回答看看.

论坛徽章:
0
2 [报告]
发表于 2007-10-29 12:10 |只看该作者
说个题外话
一个朋友当年读书的时候,中国的英语老师出的期末考试卷,单选题,是对一个常用语选择一个“正确”的表达方法,大部分学生们很快就做完了,我那个朋友没做出来,很郁闷,于是带着题目去问外教,外教在向他反复确认了几遍“这个的确是单选题吗?”后,无奈地说,这 4 种表达方法都是我们的常用说法。

论坛徽章:
0
3 [报告]
发表于 2007-10-29 12:14 |只看该作者
函数的返回值老的函数声明可以没有,那么表示函数返回int
参数如果没有,那么表示参数是不一定的,不进行参数的类型检查
一个函数如果没有return返回值,返回值就是个随机的值,比如
int fun()
{
    ...
    printf...
}
返回很大可能就是printf的返回值,因为printf返回值就在eax中,然后eax作为fun的返回值

论坛徽章:
0
4 [报告]
发表于 2007-10-29 12:21 |只看该作者
以前的帖子讨论过很多这些情况

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2007-10-29 12:22 |只看该作者
C语言标准中,main函数必须要是int main(void),或者int main(int,char**);
func(....)=int func(....)

论坛徽章:
0
6 [报告]
发表于 2007-10-29 12:41 |只看该作者
说实在的,这个问题当时我想了半天,最后我说,我不知道如何向你解释,也许二楼的说得比较贴切一点吧,但如果换成你的中的一个去面试如何解释呢,总不能空在那里不做吧.

论坛徽章:
0
7 [报告]
发表于 2007-10-29 12:45 |只看该作者
细节问题很多啊。

论坛徽章:
0
8 [报告]
发表于 2007-10-29 12:50 |只看该作者
1.分别指出如上代码是否有误,为什么?
是否有误:无误。不同的编译器会有不同的表现。
为什么:给我个有误的理由

2.请根据代码,介绍一下C语言的标准和规范.
这些个代码没有体现出C89 和 C99 的区别与不同,无法根据其来总结C语言的标准与规范。

3.为什么入口函数可以有这么多种写法?目的是什么?在什么时候可以用这种写法?为什么?哪一种写法最为规范,为什么?
为什么入口函数可以有这么多种写法:C语言的最大魅力之一就是自由
目的是什么:做为入口函数
在什么时候可以用这种写法:写入口函数的时候
为什么:因为要编译通过
哪一种写法最为规范:没有通读过各编译器的具体实现,无法回答。
为什么:见上

论坛徽章:
0
9 [报告]
发表于 2007-10-29 12:52 |只看该作者
实际编译一下就知道了.

1. main的prototype, int main(void), int main(int argc, char *argv[])
2. 没有给出返回类型的函数返回值默认为int
3. 函数如果没有明确的return语句, 返回值为最后一条语句的值

论坛徽章:
0
10 [报告]
发表于 2007-10-29 12:53 |只看该作者
#include <stdio.h>
//check return val in shell


int fun()
{
        extern int fun2(/*int*/);
        fun2(1,2,3,4);
        return 9;
}
int fun2(int i)
{
        return i;
}
int main(void)
{
        printf("%s","aaaaa");
        //fun();
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP