整数到布尔奇怪的语法

这个问题在这里已经有了答案:

  • 最终的C ++图书指南和列表1的答案

  • 请在这里阅读: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)是一个评估为truefalse的表达式。 因此, b根据i的值获取true/false的值。

    链接地址: http://www.djcxy.com/p/85467.html

    上一篇: Integer to Boolean strange syntax

    下一篇: The * in C++ Initialisations