[問題] main()和main(void)的差別

看板C_and_CPP作者 (熊貓小弟)時間3年前 (2020/05/27 19:54), 編輯推噓11(11028)
留言39則, 16人參與, 3年前最新討論串1/1
已爬文看過main()系列文章, 但一直困擾我很久的一個問題: 根據函數的定義是定義域非空X裡所有元素x都要有唯一的值y來在對應域Y對應。那麼請問 問題來了 C和C++中, 1.為何主程式可以不用丟元素進去?主程式不也是一種函數嗎? 2.如果把void指令也看成一個元素,是否就滿足函數的定義了? 3.main()是否為main(void)的化簡呢? 數學系的我剛學程式好難接受啊 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.162.72 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1590580459.A.D32.html

05/27 20:16, 3年前 , 1F
要不要改用functional language (咦)
05/27 20:16, 1F

05/27 20:53, 3年前 , 2F
改用 variable-length argument 思考應該就可以...吧
05/27 20:53, 2F

05/27 21:55, 3年前 , 3F
那你不會先在x = x + 1就卡關了嗎XD
05/27 21:55, 3F

05/27 21:57, 3年前 , 4F
然後void不可以視為元素,這麼想是錯的
05/27 21:57, 4F

05/27 22:07, 3年前 , 5F
把隱含的時間軸帶進去看看
05/27 22:07, 5F

05/27 22:50, 3年前 , 6F
一般函數也可以foo(void) 當初為什麼叫function呢?
05/27 22:50, 6F

05/28 05:35, 3年前 , 7F
函數的定義域可以是空集....吧?
05/28 05:35, 7F

05/28 07:07, 3年前 , 8F
以前有void main(void)
05/28 07:07, 8F

05/28 07:21, 3年前 , 9F
6樓有回答到你的問題嗎
05/28 07:21, 9F

05/28 11:34, 3年前 , 10F
3. C++ 可以 C 不行. C 不寫 void 的宣告代表未知 arity
05/28 11:34, 10F

05/28 12:17, 3年前 , 11F
如果想了解進階觀念的話,去看jserv的「你所不知道的C
05/28 12:17, 11F

05/28 12:17, 3年前 , 12F
語言」中的規格書探討
05/28 12:17, 12F

05/28 12:18, 3年前 , 13F

05/28 12:18, 3年前 , 14F
iew
05/28 12:18, 14F

05/28 12:19, 3年前 , 15F
大致上是說有void的才是正確的
05/28 12:19, 15F

05/28 12:19, 3年前 , 16F

05/28 14:07, 3年前 , 17F
謝謝joery大大的回答
05/28 14:07, 17F

05/28 17:00, 3年前 , 18F
函數定義域為空代表常數ㄅ 不過這離題了
05/28 17:00, 18F

05/28 17:00, 3年前 , 19F
總之就只是名詞就這麼多 偶爾有點歧義也是很正常的
05/28 17:00, 19F

05/28 17:33, 3年前 , 20F
所以數學上像 main 這樣要叫什麼
05/28 17:33, 20F

05/28 21:13, 3年前 , 21F
其實說常數也是不正確的,因為main()雖然沒直接拿參數,但
05/28 21:13, 21F

05/28 21:14, 3年前 , 22F
code裡面其實卻可以從argv以外的地方拿input,所以不是嚴
05/28 21:14, 22F

05/28 21:14, 3年前 , 23F
格的常數XD
05/28 21:14, 23F

05/28 21:16, 3年前 , 24F
事實上這說法也可推到一般有輸入的程式語言function,再加
05/28 21:16, 24F

05/28 21:17, 3年前 , 25F
上指標等等的存在,本來程式語言的function就是不能直接跟
05/28 21:17, 25F

05/28 21:17, 3年前 , 26F
數學的function畫上等號的,就只是把詞拿來用罷了
05/28 21:17, 26F

05/28 22:43, 3年前 , 27F
我說的是數學上會當沒輸入的函數常數啦XD
05/28 22:43, 27F

05/29 05:19, 3年前 , 28F
認真建議你先寫 Agda 或 Coq 來熟悉一下直構邏輯(types
05/29 05:19, 28F

05/29 05:19, 3年前 , 29F
)和 pattern calculus(lambda calculus)
05/29 05:19, 29F

05/29 05:19, 3年前 , 30F
如果你選的是 Agda,應該可以無痛直接接上 Haskell
05/29 05:19, 30F

05/29 05:19, 3年前 , 31F
在 Haskell 裡就有對電腦程式各種東西做數學的抽象
05/29 05:19, 31F

05/29 05:19, 3年前 , 32F
掌握了 Haskell 的 GADT 之後就很容易可以掌握 OO 語言了
05/29 05:19, 32F

05/29 05:19, 3年前 , 33F
語法從 Haskell 跳到 OO 不習慣的話,可以先寫 rust 找一
05/29 05:19, 33F

05/29 05:19, 3年前 , 34F
下對應
05/29 05:19, 34F

05/29 05:28, 3年前 , 35F
啊... 我說的對程式的東西做數學的抽象指的就是像你講的
05/29 05:28, 35F

05/29 05:28, 3年前 , 36F
void、IO 之類的東西
05/29 05:28, 36F

05/29 13:35, 3年前 , 37F
以為走錯版
05/29 13:35, 37F

05/31 02:55, 3年前 , 38F
副程式、函數、純函數本來就有差吧XD
05/31 02:55, 38F

05/31 02:55, 3年前 , 39F
概念上有差XD
05/31 02:55, 39F
文章代碼(AID): #1UpbJhqo (C_and_CPP)