![]() |
1
1
将无符号值与0有符号int进行比较时,该值首先(隐式)强制转换为int。由于uint8_t介于0和255之间,因此当强制转换为32位int时,该值为正值。 另一方面,uint32_t介于0和2^32-1之间,因此当转换为32位int时,它可能会换行并变为负数(实际上,所有大于或等于2^31的值都将转换为负数int)。所以,您的比较并不总是正确的,编译器是正确的。 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 4 月前 |
![]() |
MysteryMoose · GCC下故意忽略初始化器警告中的过量元素 6 月前 |
|
Ken P · 如何利用[*]printf格式类型规范警告? 10 月前 |
![]() |
fghoussen · 在C结构体中,为什么打包、对齐似乎会进行填充? 10 月前 |
![]() |
adversarr · 全局变量何时导出到可执行文件? 10 月前 |