[問題] 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