自从我开始使用 Java 以来,它不支持从数字类型到布尔值的隐式转换,这对我来说非常恼火,所以你不能做这样的事情:
if (flags & 0x80) { ... }
相反,你必须经历这种疯狂:
if ((flags & 0x80) != 0) { ... }
null 和对象也是如此。我所知道的所有其他类似 C 的语言(包括 JavaScript)都允许这样做,所以我认为 Java 只是白痴,但我刚刚发现 C# 是相同的(至少对于数字来说,不知道 null/objects):http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
微软故意从C++中改变它,那为什么呢?显然我错过了一些东西。为什么要改变(我认为是)世界上最自然的事情来延长打字时间?这到底是怎么回事?
为了清楚起见。它使以下错误变得非法:
int x = ...;
if (x = 0) // in C: assign 0 to x and always evaluate to false
.... // never executed
注意:大多数现代 C / C++ 编译器都会对这种简单的模式发出警告(但不是错误),但可能有许多变化。它可能会蔓延到你身上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)