[問題] 十三誡之七的疑問

作者: wtchen (沒有存在感的人)   2016-04-15 22:28:27
問題(Question):
13誡之7有這一段:
錯誤例子:
unsigned int a = 0;
int b[10];
for(int i = 9 ; i >= a ; i
作者: nowar100 (拋磚引玉)   2016-04-15 22:32:00
作者: wtchen (沒有存在感的人)   2016-04-15 22:34:00
請問這是在spec裏面規定的嗎?
作者: Caesar08 (Caesar)   2016-04-15 22:35:00
查到的都是說,signed會變成unsigned
作者: wtchen (沒有存在感的人)   2016-04-15 22:36:00
K&R裡說,long vs unsigned int的情況unsigned int有可能變成signed long
作者: nowar100 (拋磚引玉)   2016-04-15 22:37:00
unsigned int rank >= int 所以會往 unsigned 轉
作者: Schottky (順風相送)   2016-04-15 22:37:00
看來不找一份 spec 出來看不行了...
作者: Schottky (順風相送)   2016-04-15 22:39:00
雖說 ISO 要錢,但前幾天翻到一份 IETF draft 免費的應該只是格式不同,一樣都是講 C89/C90
作者: wtchen (沒有存在感的人)   2016-04-15 22:41:00
C11 spec有701頁,剛丟關鍵字comparison都找沒...
作者: nowar100 (拋磚引玉)   2016-04-15 22:42:00
try google "c integer compare promotion" XD
作者: Caesar08 (Caesar)   2016-04-15 22:43:00
C++ 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:00
char 有點特別, 因為 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:00
13誡有哪條讓你懷疑的?
作者: springman (司布林)   2016-04-16 15:29:00
應該避免寫執行結果是 machine-dependent 的程式碼。

Links booklink

Contact Us: admin [ a t ] ucptt.com