先在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:正确
----------------解决方案--------------------------------------------------------
先在Turbo C 2.0中编译:
#include <stdio.h>
fun()
{
return 1;
}
main()
{
printf("%d",fun(2));
getchar();
}
再在c++编译器上编译
查看结果
不能这样说,说明C不进行严格的类型检查,而C++进行
这是C++的一大改进,不是编译器原因
建议在写这样的程序的时候,把void也写上
即fun(void)这样就可以了
----------------解决方案--------------------------------------------------------
刚才没注意,看错你的贴子了,与你的结论不搭界
你还可再试试这个,就知道原因了
[QUOTE]#include <stdio.h>
int a=9,d=5;
fun()
{
a=a+d;
return ;
}
main()
{
printf("%d",fun(2,0));
getchar();
}[/QUOTE]
----------------解决方案--------------------------------------------------------
不错,见解深了啊,你能把你的意思简洁说出么?刚才学校断网,现在在网吧,求解,谢谢
----------------解决方案--------------------------------------------------------