No one will switch to complete circuit evaluation. There is a rare case when it makes sense to use it. function DoSomething(): Boolean; begin   // ...   Result := (not HasError) and DumpStatus(); end; DumpStatus is a function that will dump the status whether there was an error or not.  If error exists, DumpStatus will dump the error status. If not it will dump a success status.  DoSomething's result depends on HasError. So it's important to do a full evaluation of the expression  "(not HasError) and DumpStatus()".