【发布时间】:2017-12-25 00:58:19
【问题描述】:
我遇到了一些类似的 c++ 代码
if(((unsigned int)0-1)>0)
{
//do something
}
然后程序执行 if 块中的语句。出于好奇,我在 c 中尝试了同样的方法,结果也一样。我的理解是,如果 if 条件中的表达式返回布尔值 true,则 if 块中的语句将被执行。这意味着 ((unsigned int)0-1)>0 必须返回 true。为什么会这样?
【问题讨论】:
-
当我找到
((unsigned int)0-1)时,我得到4294967295,所以看起来比较有效。 -
如果条件是常数,那么作者显然不知道他们在做什么。没有进一步的上下文,这个问题无法回答。这可以很好地简化为 if(true),或者进一步展开为无条件语句。
-
表达式
(unsigned int)0 - 1有unsigned int类型。所以它总是>= 0,具体情况下是>0,因为!=0 -
请使用更好的铸造技术。
-
(unsigned int)0可以写成0U。
标签: c++ if-statement