逻辑运算符的短路性质

    技术2022-07-11  103

    逻辑运算符||和&&具有短路属性,他们以一种特殊的方式处理不同类型的值,他们会首先按顺序先将左侧的值转换为布尔类型,来决定做什么,再根据左侧布尔类型的取值,返回左侧的布尔类型取值或右侧的布尔类型取值。

    对于||来说,若左侧的值能转换成true,则直接返回左侧的布尔类型,右侧的等式不再进行处理,若左侧的值转换成false,则返回右侧转换后的布尔类型

    对于&&来说,其工作方式与||类似,若左侧的值转换成false,则直接返回左侧的布尔类型,否则返回右侧的布尔类型

    例:

    int main() { int i = 0; cout << (1 || i++); cout << i; }

    输出结果:10

    int main() { int i = 0; cout << (0 || i++); cout << i; }

    输出结果:01

    int main() { int i = 0; cout << (0 && i++); cout << i; }

    输出结果:00

    int main() { int i = 0; cout << (1 && ++i); cout << i; }

    输出结果:11

    Processed: 0.011, SQL: 9