0
A
回答
2
在典型的实现,是的,他们是等价的:如果x
为负,(unsigned) x
会比INT_MAX
更大。这又意味着(unsigned) x < (unsigned) N
将是错误的。
在罕见的实现中,不,它们不是等价的。允许实现允许int
和unsigned int
具有相同数量的值位(INT_MAX == UINT_MAX
),在这种情况下(unsigned) x
将不会大于INT_MAX
,并且(unsigned) x < (unsigned) N
可能仍然为真。
1
当UINT_MAX等于INT_MAX时,这些行不相等。 C允许这样的实现。
在这种情况下缠绕,当x从int转换为一个unsigned int,可能不会产生一个值,该值比N
例如较大:N的值是INT_MAX,该值的x是-2。在完成从signed int到unsigned int的转换后,N的值为INT_MAX,但x的值为INT_MAX-1。因此,第二条if语句被采用,但不是第一条。
实际上你可能不会遇到这样的实现。当UINT_MAX的值大于INT_MAX时,if语句具有相同的行为。你总是可以断言这种行为:
static_assert(UINT_MAX > INT_MAX , "");
相关问题
- 1. 库检查两个正则表达式是否相等/同构
- 2. 如何比较两个逻辑表达式是否相等?
- 3. 这两个代码是否相等?
- 4. 这两个uml箭头是否相等?
- 5. 这两个正则表达式在功能上是否相同?
- 6. 这个表达式为什么相等?
- 7. 这些Python表达式是否相互等价?
- 8. 为什么这两个表达式在语义上不相等?
- 9. 这些jQuery表达式是否相同?
- 10. 这些cron表达式是否相同?
- 11. 检查两个表是否相等
- 12. 这两个模式是否相同?
- 13. 这两个表述是否相同?
- 14. 检查两个Python正则表达式模式是否相同
- 15. 如何检查两个表达式是否相等或没有在Java中
- 16. 是这个postgres正则表达式相当于这个表达式吗?
- 17. 如何确定两个布尔表达式是否相同
- 18. 如何确定两个数学表达式是否“相同”?
- 19. Z3检查两个表达式是否相同
- 20. Pythonic的方式来检查是否两个列表的列表是相等的
- 21. 测试两个PersistenceContexts是否相等
- 22. 确定两个复数是否相等
- 23. 检查两个位置是否相等
- 24. 测试两个对象是否相等
- 25. 检查两个“select”是否相等
- 26. 比较两个DRIVER_OBJECT是否相等?
- 27. 检查两个向量是否相等
- 28. 确定两个对象是否相等
- 29. 这两个咖喱函数实现是否相等?
- 30. 这两个select sql语句是否相等? “join ... on”与“where”
是的。这是[this]的一个特例(http://stackoverflow.com/a/17095534/995714) –
我想知道为什么这个问题投下了票 –
如果您认为任何答案已解决您的问题,请考虑接受它(答案左边的绿色复选标记)。这将向社区表明,该问题已得到解答,并将为您和回答者提供一些声誉。 – 2501