Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Short-circuiting in conditions in Blockchain / Solidity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is short-circuiting in conditions?
Short-circuiting means the program stops checking conditions as soon as the result is known. For example, in an AND condition, if the first part is false, it won't check the second part because the whole condition is false.
Click to reveal answer
beginner
Why is short-circuiting useful in blockchain smart contracts?
It saves gas (cost) by not running unnecessary checks. This makes smart contracts cheaper and faster to run.
Click to reveal answer
beginner
In the expression `A && B`, when is B NOT evaluated?
B is not evaluated if A is false, because the whole AND condition will be false regardless of B.
Click to reveal answer
beginner
In the expression `A || B`, when is B NOT evaluated?
B is not evaluated if A is true, because the whole OR condition will be true regardless of B.
Click to reveal answer
intermediate
Give an example of short-circuiting preventing an error in a smart contract condition.
If you check `user != address(0) && balance[user] > 0`, the second part runs only if `user` is not zero address. This avoids errors from checking balance of a zero address.
Click to reveal answer
In a condition `A && B`, if A is false, what happens?
AB is always checked
BB is not checked because the result is false
CThe whole condition is true
DThe program crashes
Why does short-circuiting save gas in blockchain smart contracts?
ABecause it uses more memory
BBecause it increases the contract size
CBecause it slows down execution
DBecause it skips unnecessary checks
In `A || B`, when is B evaluated?
AOnly if A is false
BOnly if A is true
CAlways
DNever
What can short-circuiting help prevent in smart contracts?
AFaster execution
BMore gas usage
CErrors from invalid checks
DSyntax errors
Which operator uses short-circuiting to skip evaluation if the first condition is true?
AOR (||)
BAND (&&)
CNOT (!)
DXOR (^)
Explain short-circuiting in conditions and why it matters in blockchain smart contracts.
Think about how skipping checks can save cost and avoid mistakes.
You got /4 concepts.
    Describe a real-life example where short-circuiting prevents an error in a smart contract condition.
    Consider checking if an address is zero before accessing its balance.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does short-circuiting mean in blockchain condition checks using && and ||?
      easy
      A. It stops checking further conditions once the result is decided.
      B. It always checks all conditions regardless of the first result.
      C. It reverses the order of condition checks.
      D. It only works with numeric conditions.

      Solution

      1. Step 1: Understand short-circuiting concept

        Short-circuiting means the program stops checking conditions as soon as the final result is known.
      2. Step 2: Apply to && and ||

        For &&, if the first condition is false, no need to check further. For ||, if the first condition is true, no need to check further.
      3. Final Answer:

        It stops checking further conditions once the result is decided. -> Option A
      4. Quick Check:

        Short-circuiting = Stops early [OK]
      Hint: Stop checking when outcome is certain [OK]
      Common Mistakes:
      • Thinking all conditions always run
      • Confusing && and || behavior
      • Assuming short-circuiting only applies to numbers
      2. Which of the following is the correct syntax for short-circuit AND in a blockchain smart contract condition?
      easy
      A. if (condition1 | condition2) { execute(); }
      B. if (condition1 & condition2) { execute(); }
      C. if (condition1 || condition2) { execute(); }
      D. if (condition1 && condition2) { execute(); }

      Solution

      1. Step 1: Identify correct AND operator syntax

        The short-circuit AND operator is &&, which checks the second condition only if the first is true.
      2. Step 2: Compare options

        if (condition1 && condition2) { execute(); } uses &&, correct for short-circuit AND. Options B and D use single & or | which are bitwise operators, not short-circuit. if (condition1 || condition2) { execute(); } uses OR operator.
      3. Final Answer:

        if (condition1 && condition2) { execute(); } -> Option D
      4. Quick Check:

        Short-circuit AND = && [OK]
      Hint: Use double ampersand for AND short-circuit [OK]
      Common Mistakes:
      • Using single & instead of &&
      • Confusing AND (&&) with OR (||)
      • Using bitwise operators by mistake
      3. Consider this blockchain code snippet:
      bool a = false;
      bool b = true;
      if (a && (b = false)) { }
      return b;

      What is the returned value?
      medium
      A. false
      B. Syntax error
      C. true
      D. Runtime error

      Solution

      1. Step 1: Analyze short-circuit AND behavior

        Since a is false, the b = false part is not executed due to short-circuiting.
      2. Step 2: Determine final value of b

        b remains true because the assignment did not happen. So, return b; returns true.
      3. Final Answer:

        true -> Option C
      4. Quick Check:

        False && skips second = b stays true [OK]
      Hint: False && skips right side, no assignment [OK]
      Common Mistakes:
      • Assuming b becomes false anyway
      • Ignoring short-circuit effect
      • Thinking code throws error
      4. Find the error in this blockchain condition:
      if (isValid || checkStatus()) {
      execute();
      }

      where checkStatus() is a function that must run always.
      medium
      A. Function checkStatus() may not run due to short-circuiting.
      B. No error, code is correct.
      C. Syntax error: missing semicolon.
      D. Logical AND should be used instead of OR.

      Solution

      1. Step 1: Understand short-circuit OR behavior

        If isValid is true, checkStatus() will not run because of short-circuiting.
      2. Step 2: Identify problem with function call

        Since checkStatus() must always run, using || causes it to sometimes skip, which is an error.
      3. Final Answer:

        Function checkStatus() may not run due to short-circuiting. -> Option A
      4. Quick Check:

        OR short-circuit skips right if left true [OK]
      Hint: OR skips right if left true, function may not run [OK]
      Common Mistakes:
      • Assuming function always runs
      • Confusing syntax error with logic error
      • Using AND instead of OR without reason
      5. You want to check two blockchain conditions: isOwner and hasBalance. You must run logAccess() always, but only execute transfer() if both conditions are true. Which code correctly uses short-circuiting?
      hard
      A. if (isOwner && hasBalance) { logAccess(); transfer(); }
      B. logAccess(); if (isOwner && hasBalance) { transfer(); }
      C. if (isOwner & hasBalance) { logAccess(); transfer(); }
      D. if (isOwner && hasBalance && logAccess()) { transfer(); }

      Solution

      1. Step 1: Identify when logAccess() must run

        logAccess() must run always, so it should be called outside the condition.
      2. Step 2: Check condition for transfer()

        transfer() runs only if both isOwner and hasBalance are true, so use && inside the if.
      3. Step 3: Analyze options

        if (isOwner && hasBalance) { logAccess(); transfer(); } puts logAccess() inside the if, so it only runs if conditions true. if (isOwner && hasBalance && logAccess()) { transfer(); } calls logAccess() inside condition, so it may not run due to short-circuiting. if (isOwner & hasBalance) { logAccess(); transfer(); } uses single & which is bitwise, not short-circuit. logAccess(); if (isOwner && hasBalance) { transfer(); } calls logAccess() first always, then conditionally transfer().
      4. Final Answer:

        logAccess(); if (isOwner && hasBalance) { transfer(); } -> Option B
      5. Quick Check:

        Call always outside, conditionally inside [OK]
      Hint: Call always-run functions outside conditions [OK]
      Common Mistakes:
      • Putting always-run function inside condition
      • Using bitwise & instead of &&
      • Calling functions in wrong order