C++ short-circuiting of booleans

前端 未结 8 2007
生来不讨喜
生来不讨喜 2020-11-28 16:05

I\'m new to c++ and am curious how the compiler handles lazy evaluation of booleans. For example,

if(A == 1 || B == 2){...}

If A does equal

8条回答
  •  时光说笑
    2020-11-28 16:29

    The compiler handles this by generating intermediate jumps. For the following code:

    if(A == 1 || B == 2){...}
    

    compiled to pseudo-assembler, might be:

        load variable A
        compare to constant 1
        if equal, jump to L1
        load variable B
        compare to constant 2
        if not equal, jump to L2
    L1:
        ... (complete body of if statement)
    L2:
        (code after if block goes here)
    

提交回复
热议问题