[问题] main()和main(void)的差别

楼主: pandaren0905 (熊猫小弟)   2020-05-27 19:54:17
已爬文看过main()系列文章,
但一直困扰我很久的一个问题:
根据函数的定义是定义域非空X里所有元素x都要有唯一的值y来在对应域Y对应。那么请问
问题来了
C和C++中,
1.为何主程式可以不用丢元素进去?主程式不也是一种函数吗?
2.如果把void指令也看成一个元素,是否就满足函数的定义了?
3.main()是否为main(void)的化简呢?
数学系的我刚学程式好难接受啊
作者: james732 (好人超)   2020-05-27 20:16:00
要不要改用functional language (咦)
作者: CMJ0121 (请多指教!!)   2020-05-27 20:53:00
改用 variable-length argument 思考应该就可以...吧
作者: ddavid (谎言接线生)   2020-05-27 21:55:00
那你不会先在x = x + 1就卡关了吗XD然后void不可以视为元素,这么想是错的
作者: ketrobo (猫萝卜)   2020-05-27 22:07:00
把隐含的时间轴带进去看看
作者: chuegou (chuegou)   2020-05-27 22:50:00
一般函数也可以foo(void) 当初为什么叫function呢?
作者: bibo9901 (function(){})()   2020-05-28 05:35:00
函数的定义域可以是空集....吧?
作者: zxzx8059 (zxzx8059)   2020-05-28 07:07:00
以前有void main(void)
作者: alan23273850   2020-05-28 07:21:00
6楼有回答到你的问题吗
作者: suhorng ( )   2020-05-28 11:34:00
3. C++ 可以 C 不行. C 不写 void 的宣告代表未知 arity
作者: joey11121 (KRjoyz)   2020-05-28 12:17:00
如果想了解进阶观念的话,去看jserv的“你所不知道的C语言”中的规格书探讨网址:https://hackmd.io/@sysprog/c-standards?type=view大致上是说有void的才是正确的https://i.imgur.com/HtdrzIj.jpg
楼主: pandaren0905 (熊猫小弟)   2020-05-28 14:07:00
谢谢joery大大的回答
作者: a58524andy (a58524andy)   2020-05-28 17:00:00
函数定义域为空代表常数ㄅ 不过这离题了总之就只是名词就这么多 偶尔有点歧义也是很正常的
作者: lc85301 (pomelocandy)   2020-05-28 17:33:00
所以数学上像 main 这样要叫什么
作者: ddavid (谎言接线生)   2020-05-28 21:13:00
其实说常数也是不正确的,因为main()虽然没直接拿参数,但code里面其实却可以从argv以外的地方拿input,所以不是严格的常数XD事实上这说法也可推到一般有输入的程式语言function,再加上指标等等的存在,本来程式语言的function就是不能直接跟数学的function画上等号的,就只是把词拿来用罢了
作者: a58524andy (a58524andy)   2020-05-28 22:43:00
我说的是数学上会当没输入的函数常数啦XD
作者: CoNsTaR ((const *))   2020-05-29 05:19:00
认真建议你先写 Agda 或 Coq 来熟悉一下直构逻辑(types)和 pattern calculus(lambda calculus)如果你选的是 Agda,应该可以无痛直接接上 Haskell在 Haskell 里就有对电脑程式各种东西做数学的抽象掌握了 Haskell 的 GADT 之后就很容易可以掌握 OO 语言了语法从 Haskell 跳到 OO 不习惯的话,可以先写 rust 找一下对应啊... 我说的对程式的东西做数学的抽象指的就是像你讲的void、IO 之类的东西
作者: TitanEric (泰坦)   2020-05-29 13:35:00
以为走错版
作者: jack82822005 (小郭郭)   2020-05-31 02:55:00
副程式、函数、纯函数本来就有差吧XD概念上有差XD

Links booklink

Contact Us: admin [ a t ] ucptt.com