C语言标准中, 区别与Old C有一条规则的转换, 就是signed与unsigned类型同时出现时, 转换的目标类型是什么, 老的标准是, 只要有unsigned 出现, 一定转换为unsigned类型.
C89标准中, 规定尽可能保留值, 也就是说, 如果unsigned 的值可以确定能被int 类型完全表达, 就用int, 如上例中.
(unsigned short)1 + (int)2
结果就是int.
另一点C与C++的不同是, 逻辑表达式的值类型, C++中是bool, C中却是int. 上面例子中把语言设为C++, 就可以验证这一点.
如果对GCC 中关于C标准的实现有信心, gdb应该信的过.
阅读(1142) | 评论(0) | 转发(0) |