整数到布尔奇怪的语法
这个问题在这里已经有了答案:
请在这里阅读:http://en.cppreference.com/w/cpp/language/operator_comparison
运算符!=的结果是一个布尔值。 所以这个人说“比较我的值和0”。 如果'i'不等于0,那么'!='返回true。
所以实际上,如果'我'是零而不是零“,那么b中的值就是”真“
编辑:为了回应OP对此的评论,是的,如果您使用任何其他返回bool的操作符,您可能会遇到类似的情况。 当然,当使用int类型时,!=意味着负数的计算结果为true。 如果使用> 0,则0和负数都将评估为假。
表达式(i != 0)
的计算结果为一个布尔值, true
如果表达式为真(即,如果i
是非零)和false
否则。
然后将该值分配给b
。
你会从b = i;
得到相同的结果b = i;
,如果你喜欢简洁明确,由于数字类型的标准布尔转换,它赋予false
为零,真实为非零。
或b = (i != 0) ? true : false;
b = (i != 0) ? true : false;
如果你喜欢外来的冗长。
(i != 0)
是一个评估为true
或false
的表达式。 因此, b
根据i
的值获取true/false
的值。