Borland C++ 3.1
dos吧
全部回复
仅看楼主
level 9
这个是当年最喜欢的编程工具,很多软件都是用这个写的。可惜,那些源代码现在都找不到了。。。
2020年11月25日 02点11分 1
level 1
为啥还用void main()[喷]
2020年11月27日 08点11分 2
@西点肥牛🎓 规范就是这样,c/c++语言标准一直以int main()为准。
2020年11月28日 03点11分
反正全世界正经点讲c/c++的书都是int main(),看到写void main()的人就知道肯定是被国内编的垃圾教材毒害的。
2020年11月28日 04点11分
那该用什么?
2020年11月27日 15点11分
@西点肥牛🎓 当然是int main()。外国所有正式的c/c++的书用的都是int main(),只有国内编的一些垃圾教材自创的void main()。
2020年11月28日 03点11分
level 9
好吧,看你这样的回复我就知道你不是一个程序员。
在编程上,写什么代码,怎么写,都是有理由的。比如说要求代码缩进,理由就是代码整洁,便于查看;要求写注释,就是为了让后人能明白。那这里为什么要用int呢?而有的人为什么要用void呢?这个事情不能看别人怎么写的我们就怎么认为,我们得搞清楚为什么。
在其他语言中,是需要区分函数和过程的,函数和过程的区别,简单说,就是一个有返回值,一个没有返回值。比如在Basic里,Sub表示过程,Function表示函数;Delphi里,Procedure表示过程,Function表示函数。而在C或者C++中,是不区分函数还是过程的,它统一用函数的形式表示,而区别就在于Void定义的是没有返回值的,等同于其他语言的过程。
当然,你说的用int定义,其实同样也可以用float, string等等,这些都是变量类型,用他们定义都可以。但是什么时候用函数型的定义,什么时候用过程型的定义,这个要看你程序做什么。
回到上面的那个例子,这个程序里没有做什么事情,只是让计算机输出了一行文字。所以,这个主函数main,完完全全是可以用void来定义的。这个并不是国内教材误人子弟,因为这里用int定义完全没必要。如果按照你的说法,用int定义,那么在函数体里,还需要增加一行 return 0; 因为需要有返回值啊。这样编译出来的可执行文件,比void定义的多了四个字节。在DOS时代,内存大小和程序大小寸土寸金,为什么要多消耗这四个字节呢?毫无意义。
如果你的主函数main需要被其他函数调用,那这个时候你需要考虑给主函数加上返回值类型。我估计你看到的国外的代码,都是这样的,所以你才会认为main的需要加int来定义。
2020年11月28日 08点11分 4
你还懂编程,我看你完全就没有程序员要标准化规范化的观念。c/c++标准明确规定主程序应返回int,否则为未定义行为,也就是编译器给你整出任何不可预测的后果都可以。所以,即使很多时候主程序不需要给出返回值,也要写成int main()。
2020年11月28日 17点11分
外国资料里也有void main()的程序,但都是80年代c语言真正标准化之前的事情了。包括你打开这个borland c++的帮助看看里面的示例,都是int main()。
2020年11月28日 17点11分
看了楼上你的回复,我又专门去搜了一下void main()的解释,确实,像你所说的,这个是不规范的,从C99标准之后,int main()的定义更是被明确规定下来。这个确实是我不知道的,我承认,你说的对,在这点上,我的知识已经落伍了。感谢你的提醒,让我学到了之前疏漏的东西。
2020年11月28日 18点11分
这个问题,激起了我的兴趣,又去知乎看了看,基本上算是找出一些眉目。
2020年11月28日 18点11分
level 9
我从网上找到一段文章,可以为我使用void main做个注脚吧:
----------------------------------------------------------
void main()的写法来源于main()的写法的二义性和return的可选性。
由于C语言被设计为汇编语言的简单抽象,而int返回值一般是保存在算术寄存器如AX中传递,设置和接收返回值只需一条MOV指令,因此早期C语言没有void,函数不写返回类型就是int类型,不写return就是没有返回值,函数调用语法被设计为返回值可以被轻松忽略。
所以早期main函数的写法是main(),但是这样的写法,返回值到底有没有这个问题,容易搞不清楚,实际上K&R的《C Programming Language》(1978/1988)就很多地方main()没有写return,这也影响了一些编译器,比如Lattice C就会直接忽略main()的返回值。
后来为了解决这个问题,有的编译器添加了void,main()的写法就分化为了void main()和int main(),很多人并没有注意到main()有返回值,因为很多教程main里边就是没有return的,因此接受void main()的人更多。这也影响到了一些官方的教程,比如Turbo C 2.0的参考指南等早期教程就是void main()居多。
后来有人意识到了这个问题,大力推广int main()的写法,不鼓励main()和void main()的写法,这个问题才得到一定的解决。C++更是直接废除了main()和void main()的写法。
不过还是有人忘记写return,因为main函数返回值的作用有限,而return这个关键字打字太多,因此C99开始规定如果int main()不写return自动返回0。
-----------------------------------------------------------
这段文章提到Turbo C 2.0的参考指南,也许吧,因为当年在使用Borland C+
+3
.1之前,一直用的就是Turbo C 2.0。可能是那个时候养成的习惯,这么多
年下
来就想当然的认为这是合理的,也是
正确的
了。
2020年11月28日 18点11分 5
level 3
两位都好认真,也很有风度。
2020年12月05日 15点12分 6
现在这里的讨论环境真让人舒服~我要关注dos吧~
2020年12月05日 16点12分
level 3
吧主 ,估计上面那位没有看过C创始人 Dennis M.Ritchie 和Brian W.Kernighan写的c语言教材,中文翻译版是《C 程序设计语言 第2版. 新版》
其中第2页是这样写的
#include <stdio.h>
main()
{
printf("hello, world\n");
}
其中main()这一行给出的解释是:
定义名为main的函数,它不接受参数值
不知那位说国外教程都让写成 int main() 是哪个老师教的,,,
2020年12月06日 11点12分 7
ps: 我不懂c语言,还是最喜欢pascal,不过语法已经全部忘光了,哈哈
2020年12月06日 11点12分
level 3
/* 当然是int main()。
外国所有正式的c/c++的书用的都是int main(),
只有国内编的一些垃圾教材自创的void main()
*/
那位是想说,C语言的创始人也很垃圾?
2020年12月06日 11点12分 8
我喜欢古老的东西,让人想起那个奔腾年代。源代码是写给人看的,并不是写给机器看的,最后还是看编译器如何处理
2020年12月06日 11点12分
那个奔腾年代,看来都是老人了啊~[太开心]
2021年01月24日 14点01分
@jakebds 都是老人了[哈哈]
2021年01月26日 02点01分
level 2
氛围很好!
2021年01月28日 04点01分 9
level 1
你确定是c++吗?
VC++6.0 stdio.h 是没有这个头文件的。
VC++ 6.0 的有效头文件:
#include <iostream>
int main()
{
}
还有,printfVC++中不对,C++中
cout<<"内容";
2021年02月19日 12点02分 10
iostream是STL的内容,1994年才成为C++标准的一部分,不过很可惜,Borland C++ 3.1是1990年发布的
2023年01月15日 07点01分
level 9
哥们,这是Borland C++ 3.1好不?了解一下历史。
2021年02月20日 00点02分 11
level 1
很想下载,可惜网上找不到了,不知道楼主可有下载方法,谢谢。
2021年11月28日 07点11分 12
在今天来看,很多 c++ 的关键特性不支持,没什么意义了。反而是 turbo c 还有点意义。
2022年06月05日 22点06分
level 1
int main 不是C99才开始规定的,而是C89标准(第一个C语言标准)开始就这么规定了。从来没规定过 void main 。
这是C89标准文件:
只是当时没规定必须这么写,而只是推荐这么写。用词是 can ,没说 shall。
最早规定“必须”写 int main 的,是C++98标准,用词就是 shall 了。也就是不写 int main 就算错误了。
C++98标准如下:
只是早期的编译器没那么遵守标准而已。
如果用新一点的编译器,你就会发现,用 C 的时候,void main 是警告,而用C++的时候,void main 是错误。
2022年08月31日 12点08分 13
level 1
在操作系统需要接收main函数返回值的场景下,应该要写成int main() return xx;在没有操作系统的单片机上,通常仍然使用void main()。嘻嘻~
2023年05月29日 07点05分 14
level 1
有DOS下BC++3.1的安装包吗?
2023年09月24日 17点09分 15
1