[问题] 十三诫之七的疑问

楼主: 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