为什么以下两个语句的结果不同?
('0' ? 'a' : 'b') /* -> 'a' */
('0' == true ? 'a' : 'b') /* -> 'b' */
编辑:
我要补充的是,我怀疑'0‘第一个要转换为布尔值的语句将被比较-它应该与“'0’== true”完全相同,显然这不是真的。
发布于 2011-09-21 16:30:56
因为'0‘不等于1,所以它不等于true,尽管它不是false。在第一种情况下,当' 0‘被强制转换为bool时,对于非0的所有内容,强制转换操作符返回true。
发布于 2011-09-21 16:31:38
这是因为'0'
是真实的(在if语句中),但不被认为等同于true
。就像3和17都是真的,但不相等。
发布于 2011-09-21 16:37:04
('0‘?'a‘:'b') --> 0为false,'0’是某个字符串,因此不是FALSE 0,null或'‘(空字符串)在这种情况下视为FALSE
('0‘==是否正确?'a‘:'b') -->正如其他人提到的,some_string与布尔值的比较TRUE不是TRUE
https://stackoverflow.com/questions/7496727
复制相似问题