楼主:
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 的程式码。