整数到布尔奇怪的语法
这个问题在这里已经有了答案:
请在这里阅读: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的值。
