当前位置: 代码迷 >> C语言 >> 一个感悟,请大家试试,一会再谈
  详细解决方案

一个感悟,请大家试试,一会再谈

热度:138   发布时间:2007-10-06 20:09:32.0
一个感悟,请大家试试,一会再谈

先在Turbo C 2.0中编译:
#include <stdio.h>
fun()
{
return 1;
}
main()
{
printf("%d",fun(2));
getchar();
}
再在c++编译器上编译
查看结果

搜索更多相关的解决方案: 感悟  

----------------解决方案--------------------------------------------------------

我从没用过Turbo C

fun()没有声明void在实用时却是fun(2)
我猜答案是1,不知猜中没


----------------解决方案--------------------------------------------------------
请编译试试,再讨论
----------------解决方案--------------------------------------------------------
tc2.0中编译通过,vc6.0中编译不能通过(提示fun这个函数不能接受2这个参数)....
----------------解决方案--------------------------------------------------------

把TC打如19层地狱 魂飞魄散 不得超生?


----------------解决方案--------------------------------------------------------

不能这样说,说明C不进行严格的类型检查,而C++进行
这是C++的一大改进,不是编译器原因
建议在写这样的程序的时候,把void也写上
即fun(void)这样就可以了


----------------解决方案--------------------------------------------------------

下面还有个是关于GNU的
void * pvoid;
pvoid++; //ANSI:错误
pvoid += 1; //ANSI:错误
//ANSI标准之所以这样认定,是因为它坚持:进行算法操作的指针必须是确定知道其指向数据类型大小的。
//例如:
int *pint;
pint++; //ANSI:正确

  pint++的结果是使其增大sizeof(int)。

但是大名鼎鼎的GNU(GNU‘s Not Unix的缩写)则不这么认定,它指定void *的算法操作与char *一致。

  因此下列语句在GNU编译器中皆正确:
pvoid++; //GNU:正确
pvoid += 1; //GNU:正确

  pvoid++的执行结果是其增大了1。

  在实际的程序设计中,为迎合ANSI标准,并提高程序的可移植性,我们可以这样编写实现同样功能的代码:
void * pvoid;
(char *)pvoid++; //ANSI:正确;GNU:正确
(char *)pvoid += 1; //ANSI:错误;GNU:正确


----------------解决方案--------------------------------------------------------
以下是引用栖柏在2007-10-6 20:09:32的发言:

先在Turbo C 2.0中编译:
#include <stdio.h>
fun()
{
return 1;
}
main()
{
printf("%d",fun(2));
getchar();
}
再在c++编译器上编译
查看结果


不能这样说,说明C不进行严格的类型检查,而C++进行
这是C++的一大改进,不是编译器原因
建议在写这样的程序的时候,把void也写上
即fun(void)这样就可以了

改return 1; 为return ;再回头看看你的结论
----------------解决方案--------------------------------------------------------

刚才没注意,看错你的贴子了,与你的结论不搭界


你还可再试试这个,就知道原因了

[QUOTE]#include <stdio.h>
int a=9,d=5;
fun()
{
a=a+d;
return ;
}
main()
{
printf("%d",fun(2,0));
getchar();
}[/QUOTE]


----------------解决方案--------------------------------------------------------

不错,见解深了啊,你能把你的意思简洁说出么?刚才学校断网,现在在网吧,求解,谢谢


----------------解决方案--------------------------------------------------------
  相关解决方案