【发布时间】:2013-04-26 22:49:09
【问题描述】:
我很困惑。示例:
int x=-1;
unsigned y=0;
(x<y) ----> false
int8_t x=-1;
unint8_t y=0;
(x<y) ----> true
此外,编译器会在第一次比较时发出警告,但不会在第二次比较。似乎对于
- (int vs unsigned) - int 提升为 unsigned
- (intN_t vs uintN_t) - uintN_t 提升为 intN_t
为什么会有这种行为?就像……真的吗?
【问题讨论】:
-
int8_t 和 uint8_t 是字符
-
@0A0D int16_t, int32_t, ..的结果相同
-
@PeteFordham:见 ecatmur 的回答。
标签: c