推 nowar100: 是 04/15 22:32
→ wtchen: 請問這是在spec裏面規定的嗎? 04/15 22:34
→ Caesar08: 查到的都是說,signed會變成unsigned 04/15 22:35
→ wtchen: K&R裡說,long vs unsigned int的情況unsigned int有可能 04/15 22:36
→ wtchen: 變成signed long 04/15 22:36
→ nowar100: unsigned int rank >= int 所以會往 unsigned 轉 04/15 22:37
→ Schottky: 看來不找一份 spec 出來看不行了... 04/15 22:37
→ nowar100: 因為 long 和 unsigned int 不一定誰"大" so 不一定 04/15 22:37
→ nowar100: spec有吧 我記得是promotion rank字眼的 還有 K&R很舊了 04/15 22:38
→ Schottky: 雖說 ISO 要錢,但前幾天翻到一份 IETF draft 免費的 04/15 22:39
→ Schottky: 應該只是格式不同,一樣都是講 C89/C90 04/15 22:39
→ wtchen: C11 spec有701頁,剛丟關鍵字comparison都找沒... 04/15 22:41
→ nowar100: try google "c integer compare promotion" XD 04/15 22:42
→ Caesar08: C++ standard n4567, p84, 4.7.2, 4.7.3 04/15 22:43
→ Caesar08: 這兩個就是你要的 04/15 22:43
→ wtchen: 找到了,C11 spec P69 04/15 22:44
→ wtchen: 感謝 04/15 22:44
→ wtchen: 感謝,不過意外看到原來 unsigned char跟signed char 04/15 22:47
→ wtchen: 等級是一樣的,signed char不會升級成unsigned char 04/15 22:47
→ wtchen: 而是implementation-defined 04/15 22:48
推 LPH66: char 有點特別, 因為 char/unsigned char/signed char 04/15 22:50
→ Caesar08: 好的寫法就是隨時都要注意signed跟unsigned... 04/15 22:50
→ LPH66: 三者是三個型態, 第一個會跟後兩個其一有同樣的有號性 04/15 22:50
→ LPH66: 但並沒有規定是哪一個 (這記得是 implementation defined) 04/15 22:51
推 descent: 感謝分享, 可以把這參考資料加入 13 戒嗎? 04/16 11:36
→ descent: 沒有官方正式背書, 不是很能確認 13 戒的真實性 04/16 11:37
→ Caesar08: 13誡有哪條讓你懷疑的? 04/16 12:10
推 springman: 應該避免寫執行結果是 machine-dependent 的程式碼。 04/16 15:29