| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1725 人关注过本帖
标题:一个感悟,请大家试试,一会再谈
只看楼主 加入收藏
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
 问题点数:0 回复次数:22 
一个感悟,请大家试试,一会再谈

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

搜索更多相关主题的帖子: 感悟 
2007-10-06 20:09
与梦者
Rank: 1
等 级:新手上路
帖 子:116
专家分:0
注 册:2007-10-5
收藏
得分:0 

我从没用过Turbo C

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


偶没学编程,也许本身就是一个错。。。
2007-10-06 20:13
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
请编译试试,再讨论

You have lots more to work on! Never give up!c language!
2007-10-06 20:17
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 
tc2.0中编译通过,vc6.0中编译不能通过(提示fun这个函数不能接受2这个参数)....

英者自知,雄者自胜
2007-10-06 20:20
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 

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


羊肉串 葡萄干 哈密瓜!!
2007-10-06 20:28
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 

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


You have lots more to work on! Never give up!c language!
2007-10-06 20:32
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 

下面还有个是关于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:正确


You have lots more to work on! Never give up!c language!
2007-10-06 20:33
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用栖柏在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 ;再回头看看你的结论

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-10-06 21:24
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

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


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

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


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-10-06 21:30
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 

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


You have lots more to work on! Never give up!c language!
2007-10-06 21:38
快速回复:一个感悟,请大家试试,一会再谈
数据加载中...
 
   



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

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