블록체인 학습
0 XP

불리언: bool

bool 은 참(true) 또는 거짓(false) 단 두 가지 값만 가지는 타입입니다. 활성화 여부, 일시정지 상태, 이미 투표했는지처럼 예/아니오로 답할 수 있는 상태를 표현할 때 사용합니다. 정수보다 단순하지만 컨트랙트의 흐름을 제어하는 데 꼭 필요한 타입입니다. 초기값을 지정하지 않은 bool 상태 변수의 기본값은 false 입니다.

논리 연산자

bool 값은 다음 논리 연산자로 결합하거나 뒤집을 수 있습니다.

  • && : 그리고(AND), 양쪽이 모두 true 일 때만 true
  • || : 또는(OR), 한쪽이라도 true 면 true
  • ! : 부정(NOT), true 를 false 로, false 를 true 로 뒤집음

Solidity 의 && 와 || 는 단락 평가(short-circuit) 를 합니다. 즉 && 는 왼쪽이 false 면 오른쪽을 아예 계산하지 않고, || 는 왼쪽이 true 면 오른쪽을 건너뜁니다. 오른쪽에 가스를 많이 쓰는 연산을 두면 이 성질로 불필요한 비용을 아낄 수 있습니다.

비교 결과도 bool

==, !=, <, >, <=, >= 같은 비교 연산의 결과 역시 bool 입니다. 이 bool 값은 뒤에서 배울 if 문이나 require 의 조건으로 그대로 쓰입니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
 
contract BoolExample {
    bool public isActive = true;
    bool public isPaused = false;
 
    // 활성 상태이면서 일시정지가 아닐 때만 true
    function canRun() public view returns (bool) {
        return isActive && !isPaused;
    }
 
    // 비교 결과가 그대로 bool 이 됨
    function isAdult(uint256 age) public pure returns (bool) {
        return age >= 19;
    }
}

Solidity 에는 C 언어 같은 "0 은 거짓, 0 이 아니면 참" 규칙이 없습니다. 조건 자리에는 반드시 bool 값만 올 수 있으므로, 정수를 직접 조건으로 쓸 수 없고 count > 0 처럼 비교해야 합니다.

Code Editor
에디터를 불러오는 중...
실행 결과

Run 버튼을 눌러 코드를 실행하세요.