作者:
wtchen (沒有存在感的人)
2016-04-15 22:28:27問題(Question):
13誡之7有這一段:
錯誤例子:
unsigned int a = 0;
int b[10];
for(int i = 9 ; i >= a ; i
作者:
wtchen (沒有存在感的人)
2016-04-15 22:34:00請問這是在spec裏面規定的嗎?
作者:
Caesar08 (Caesar)
2016-04-15 22:35:00查到的都是說,signed會變成unsigned
作者:
wtchen (沒有存在感的人)
2016-04-15 22:36:00K&R裡說,long vs unsigned int的情況unsigned int有可能變成signed long
unsigned int rank >= int 所以會往 unsigned 轉
雖說 ISO 要錢,但前幾天翻到一份 IETF draft 免費的應該只是格式不同,一樣都是講 C89/C90
作者:
wtchen (沒有存在感的人)
2016-04-15 22:41:00C11 spec有701頁,剛丟關鍵字comparison都找沒...
try google "c integer compare promotion" XD
作者:
Caesar08 (Caesar)
2016-04-15 22:43:00C++ standard n4567, p84, 4.7.2, 4.7.3這兩個就是你要的
作者:
wtchen (沒有存在感的人)
2016-04-15 22:44:00找到了,C11 spec P69感謝
作者:
Caesar08 (Caesar)
2016-04-15 22:45:00作者:
wtchen (沒有存在感的人)
2016-04-15 22:47:00感謝,不過意外看到原來 unsigned char跟signed char等級是一樣的,signed char不會升級成unsigned char而是implementation-defined
作者:
LPH66 (-6.2598534e+18f)
2016-04-15 22:50:00char 有點特別, 因為 char/unsigned char/signed char
作者:
Caesar08 (Caesar)
2016-04-15 22:50:00好的寫法就是隨時都要注意signed跟unsigned...
作者:
descent (「雄辯是銀,沉默是金」)
2016-04-16 11:36:00感謝分享, 可以把這參考資料加入 13 戒嗎?沒有官方正式背書, 不是很能確認 13 戒的真實性
作者:
Caesar08 (Caesar)
2016-04-16 12:10:0013誡有哪條讓你懷疑的?
應該避免寫執行結果是 machine-dependent 的程式碼。