→ Caesar08: 討論這部分的時候不會討論到multi thread,因為multi th 06/09 22:58
→ Caesar08: read本來就要自己sync 06/09 22:58
推 wtchen: 因為C++Standard有multithread的東西,想請問Standard 06/09 23:03
→ wtchen: 對這方面到底是如何規定的? 06/09 23:03
→ cgcheng: 因為版主問了,所以我特地稍微查了一下c++11關於多線程 06/09 23:23
→ cgcheng: 看起來是把對多線程的支援度提高,實際使用上仍然需要觀 06/09 23:24
→ cgcheng: 念 06/09 23:26
推 wtchen: 感謝,因為我大部份都用C所以C++比較不熟 06/09 23:27
→ wtchen: 既然不會影響我就放心了 06/09 23:28
→ cgcheng: 不過我剛重看了一下討論串,caesar08你有參與討論? 06/09 23:28
→ cgcheng: wtchen看得出你很仔細謹慎,我個人是頗欣賞,我所講的只 06/09 23:31
→ cgcheng: 是提醒加上手賤,never mind 06/09 23:32
→ wtchen: 給新手看的東西要很小心,不要造成太大的誤解讓新手一開始 06/09 23:34
→ wtchen: 觀念錯誤,所以謹慎為上。 06/09 23:34
→ cgcheng: 嘖嘖,所以一開始我其實不是很想發文,因為要很謹慎 06/09 23:35
→ wtchen: 討論的時候無所謂啦,板工發的置底文就另當別論了 XD 06/09 23:36
→ Caesar08: no。我只是要說,不需要考慮到multi thread的情況 06/09 23:36
→ cgcheng: 不過那個什麼逗號是分隔號還是運算元這個新人應該看不懂 06/09 23:36
→ cgcheng: caesar08,y..我講同件事...但總覺得感覺哪邊怪怪的 06/09 23:38
推 wtchen: ,運算符那邊要是沒人提我也不知道 XD 06/09 23:45
→ wtchen: 不過,分隔號不算sequence point應該是必備常識 06/09 23:46
→ cgcheng: 常識?!其實在很久前我並不知道.後來就算知道了但還真的沒 06/09 23:48
→ cgcheng: 遇到讓我有機會去管這個差別的時刻 06/09 23:49
→ cgcheng: 好比有一條好像是說不要overload逗號,實際上就是不會有 06/09 23:52
→ cgcheng: 人這樣搞 06/09 23:52
推 wtchen: 例如F(a(&x), b(&x)),如果a跟b都會改變該引數指標指向 06/09 23:52
→ wtchen: 的變數(x),那結果就會看a先執行還是b先執行 06/09 23:53
→ wtchen: 當然會這樣搞的應該很少.... 06/09 23:54
→ cgcheng: oh,boost好像有這樣幹,那那那當我沒常識好了 06/09 23:54
→ cgcheng: func裡面再有func,好像也是,勾起我一點點回憶..不過很少 06/09 23:56
→ cgcheng: 倒是真的 06/09 23:56
推 wtchen: 因為C有aliasing,如果觀念不太對寫出的code會很奇怪 06/09 23:58
→ cgcheng: alias是啥 06/09 23:59
→ wtchen: 雖然可以strict aliasing,可是有些高手也會用aliasing 06/10 00:00
→ wtchen: 做些有的沒的特技。 06/10 00:00
推 Frozenmouse: 原本非題所涵蓋的範圍比現在的廣很多,改這樣感覺變 06/10 00:08
→ Frozenmouse: 成是只針對 ++ -- 而已了… 06/10 00:08
→ Frozenmouse: 原本非題→原本題目 06/10 00:08
推 Hazukashiine: 其實我原本想到比較好的題目是: 06/10 00:12
→ Hazukashiine: 不要在兩個順序點之間,對同一個變數賦值 06/10 00:12
→ cgcheng: wtchen謝謝,我看了一下覺得好像開-Wall就有機會避免 06/10 00:13
→ cgcheng: Hazukashiine的題目不錯 06/10 00:14
推 Hazukashiine: 嗚嗚被切掉了QQ ...,對同一個變數賦值兩次以上 06/10 00:16
→ Hazukashiine: 但是我覺得啊~越精確的解釋,新手真的越容易理解嗎 06/10 00:17
→ cgcheng: 當然不會理解 06/10 00:18
→ Hazukashiine: 只是要避免寫出一些奇怪代碼而要去理解順序點是什麼 06/10 00:19
→ cgcheng: 只會讓他更亂而已 :) 06/10 00:19
→ cgcheng: 其實我反而好奇你不跟新人講,他就真的會寫出奇怪的東西? 06/10 00:20
→ cgcheng: 忘了問,wtchen所說的alias是指point來point去嗎? 06/10 00:23
→ Hazukashiine: 也許會。因為我就做過這種事,在我是新手的時候 www 06/10 00:24
→ cgcheng: 回文還挺累的,小弟要先告退了..也許不會再回來看這串 06/10 00:24
推 Frozenmouse: 第一次學++ --興奮到寫出奇怪的東西也是有可能的XD 06/10 00:26
→ cgcheng: Hazukashiine,really?看來要學好程式真的很難 06/10 00:26
→ Frozenmouse: 更不用說會有教授教這個… 06/10 00:27
→ cgcheng: 不才小弟第一個學lang的叫做quick basic QQ 06/10 00:28
→ cgcheng: 我不是資工的,不過一般計算機概論我肯定教授不會教這個XD 06/10 00:29
推 wtchen: Hazukashiine的題目我也想過,可是要跟新手解釋順序點 06/10 00:29
→ wtchen: 好困難阿....而且++/--算是月經題了 06/10 00:30
→ Hazukashiine: 對啊,想到就覺得會適得其反 XDDD 06/10 00:30
→ wtchen: alaising就是一個函式兩個以上pointer參數是同一個這樣... 06/10 00:31
→ Hazukashiine: 所以我就想說用 在一個無順序點的表示式中... 06/10 00:31
→ wtchen: 一般人不會這樣搞不過compiler預設就是假設真的有人這樣寫 06/10 00:31
→ Hazukashiine: 一是邏輯等價的,二是也許看的人會直接無視順序點XD 06/10 00:32
→ cgcheng: parameter同個pointer?有需要這樣子用阿? 06/10 00:32
→ wtchen: 現在大學到底教不教順序點?如果有教的話怎麼老是有++/-- 06/10 00:32
→ wtchen: 的問題出現? 06/10 00:33
→ Hazukashiine: 不教,因為這是實作的細節,不是程式語言理論基礎 06/10 00:33
→ Hazukashiine: 遇到的人,自己想辦法除錯啦,自己就會發現了吧應該 06/10 00:34
推 wtchen: cgcheng大不看這串OK,要回來看文發文就好.... 06/10 00:34
→ cgcheng: 我怎麼覺得可以解讀為++/--學好就是一個破處的成長開始XD 06/10 00:35
→ Hazukashiine: 老師也會儘可能不出那種自己為是要背優先級的爛題目 06/10 00:35
→ Hazukashiine: 以 06/10 00:35
→ wtchen: 不過因為C++的作法跟C又有不同,所以原題目不太合適 06/10 00:36
→ wtchen: C++可以允許 ++++i這種寫法 06/10 00:37
→ wtchen: 有人有更好的意見歡迎提出,集思廣益! 06/10 00:37
→ Hazukashiine: 不然就擴展題目的範圍:不要做出語言未定義的性為? 06/10 00:38
→ cgcheng: ++++i因為可能還要考慮operator overload吧? 06/10 00:38
→ Hazukashiine: 行 06/10 00:38
→ Hazukashiine: ++i 在 C++ 是 lvalue 而 C 是 rvalue 06/10 00:39
→ cgcheng: 你們討論的本來就到了實作上的細節,不過實際上到底要不要 06/10 00:39
→ cgcheng: 管這些都還很難說 06/10 00:40
→ wtchen: 不要做出語言未定義的行為->未定義行為多到數不清~~ 06/10 00:41
→ Hazukashiine: 對啊 XDDD 沒錯啊 但是可以舉幾個常見會犯的例子 06/10 00:41
→ cgcheng: 我這個新手只會覺得哪來這麼多毛 :~~ 06/10 00:42
→ wtchen: 所以我盡可能舉例說明....但是C跟C++分歧已經越來越大 06/10 00:42
→ Hazukashiine: 不過這會讓它與前面的東西重疊,修改字串常量就是UB 06/10 00:43
→ wtchen: 要兼顧其實有點複雜,加上很多老師把C++當C教 06/10 00:43
→ cgcheng: 好吧,到這很明顯crazy,只是路過,很謝謝你們陪我 XD 06/10 00:43
→ wtchen: C++都快出到17了還在用C的語法... 06/10 00:44
→ Hazukashiine: 不然就分成新手與進階兩種不同的內容(誤 06/10 00:45
→ wtchen: 所以我才想說針對++/--就好,就如cgcheng說的,搞懂 06/10 00:45
→ wtchen: 就很不容易了 06/10 00:45
推 wtchen: 標題改了一下 06/10 15:28
→ wtchen: "++i/i++/--i/i--/f(&i)哪個先執行跟順序有關" 06/10 15:28
→ wtchen: 不知這樣好不好?原標題因為真的不太正確所以不能用 06/10 15:29
→ Hazukashiine: 沒有說不好,但是實在這樣下去越來越複雜也是不妥QQ 06/10 16:33
推 wtchen: 我是覺得正確最重要,已經儘可能簡化了 06/10 16:50
※ 編輯: cgcheng (223.136.110.41), 06/11/2016 03:26:36
推 locklose: 朝聖推 06/29 16:01