fork download
  1. #include <iostream>
  2.  
  3. bool foo()
  4. {
  5. std::cout << " called foo()" << std::endl;
  6. return false;
  7. }
  8.  
  9. int main()
  10. {
  11. bool b;
  12. std::cout << "b = foo() && foo()" << std::endl;
  13. b = foo() && foo();
  14.  
  15. // foo() not called -- b is false, so no need to continue
  16. std::cout << "b = b && foo()" << std::endl;
  17. b = b && foo();
  18.  
  19. // foo() still called because &= is eager
  20. std::cout << "b &= foo()" << std::endl;
  21. b &= foo();
  22.  
  23. // equivalent is the eager form of &
  24. std::cout << "b = b & foo()" << std::endl;
  25. b = b & foo();
  26. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
b = foo() && foo()
  called foo()
b = b && foo()
b &= foo()
  called foo()
b = b & foo()
  called foo()