| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2324 人关注过本帖
标题:谁能帮我解决这题
只看楼主 加入收藏
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
老谭的书是基于dos系统下的TC2.0写的,这个应该在前言就有说明,老谭的C我是没看过,但我的BASIC是学的就老谭的.从上面的贴子看,偶觉得仅对于老谭的书来说 void main()不算是大错吧?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2008-05-03 22:39
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
汇编有点忘记了...汗下...

学习需要安静。。海盗要重新来过。。
2008-05-03 22:41
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
To Knocker.
你的汇编代码说明一个问题:void main会返回无意义的值(本例中,是字符串"hello world"的地址偏移),而int main,恩,至少安全些些……
PS:对C来说,函数的返回值不是由void和int决定的,函数的返回值就是函数执行以后ax寄存器的值。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-03 22:48
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
回复 23# 的帖子
再给你看一个:


/*  HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"
void main()
{
    printf("Hello, world\n");
    return 0;
}
警告 noname.c 8: void类型的函数不应有返回值在 main 函数中



_main    proc    far
;    ?debug    L 7
    mov    ax,offset DGROUP:s@
    push    ax
    call    far ptr _printf
    pop    cx
;    ?debug    L 8
    xor    ax,ax
    jmp    short @1
@1:
;    ?debug    L 9
    ret    
_main    endp

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2008-05-03 22:56
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
而int main,恩,至少安全些些……
////根据是什么?

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

/*  HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"
int main()
{
    printf("Hello, world\n");

}



_main    proc    far
;    ?debug    L 7
    mov    ax,offset DGROUP:s@
    push    ax
    call    far ptr _printf
    pop    cx
@1:
;    ?debug    L 9
    ret    
_main    endp

综上所说:
int main 还是 void main  并不是影响main返回值的直接因素,所以可以乱写,哈哈哈....

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2008-05-03 23:01
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
楼主讨论的是弱类型的C啊……哎……
不管怎么说,你那样写(第一个),肯定是一个警告的。
还有根据标准,int main(){}(第二个)最后编译器会自动加个reuturn 0;的……
不过看汇编代码的风格,似乎是TC,我就不说很多了……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-03 23:10
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
我讨论的不是int int main()与void main对与错的问题,而void main出现在老谭基于dos系统下的TC2.0写的C教科书中出现void main是不是个大问题的问题

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2008-05-03 23:15
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
我有说过是针对老谭做的讨论吗?
况且,老谭在新书上面已经做了更正
最后,我似乎说过,这不过是一个大不了的问题吧?

[[it] 本帖最后由 StarWing83 于 2008-5-3 23:40 编辑 [/it]]

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-03 23:39
纨酷子帝
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2008-4-30
收藏
得分:0 
四楼的不错 要是用%6d输出就更好了!

编程高手 QQ群:19728471。只为交流,共同进步,非诚勿扰!
2008-05-03 23:40
快速回复:谁能帮我解决这题
数据加载中...
 
   



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

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