" boolean ".
표준 C ++ 데이터 유형 " bool " 그리고 둘 중 하나를 사용하는 이유는 무엇입니까?
사용법이 동일하다면 둘 다 존재하는 이유와 Arduino 코드에서 선호하는 것은 무엇입니까?
댓글
답변
다른 답변은 일반적으로 유용한 정보를 제공하지만 작성자는 질문을 매우주의 깊게 읽지 않은 것 같습니다. 부울 iv가 아닌 bool 유형에 대해 이야기하고 있기 때문입니다. id = “435a4b860f”>
유형. Arduino API에서 boolean
는 Arduino.h에 정의 된 bool
의 유형 별칭입니다.
https://github.com/arduino/Arduino/blob/1.8.3/hardware/arduino/avr/cores/arduino/Arduino.h#L125
typedef bool boolean;
bool
와 마찬가지로 boolean
유형과 모든 표준 C ++ 프로그래밍 참조는 . 이러한 이유로 bool
를 잘못 참조하는 다른 답변은 여전히 다소 유용합니다.
분명히 과거 어느 시점에서 Arduino 사람들은 이름을
는 bool
보다 초보자에게 더 친숙하며 아마도 처리 언어와 일치
합니다. a>. 그러나 여기에 설명 된대로 :
https://github.com/arduino/Arduino/issues/4673
불필요한 비표준 유형의 사용은 이제 코드의 이식성이 떨어지고 실제로 bool
보다 명확한 이점을 제공하지 않기 때문에 잘못된 결정으로 간주됩니다. 제안은 다음과 같습니다. Arduino 참조의 모든 공식 Arduino 코드 및 문서 bool
에서 boolean
사용을 제거하고 일부는 공식적으로 지원 중단하기를 원합니다. boolean
. 따라서 제 조언은 코드에서 boolean
대신 bool
를 사용하는 것입니다.
Answer
부울 변수 유형은 가능한 값이 두 개 뿐인 true
또는 false
. 내부적으로는 int
(16 비트 정수) 또는 uint8_t
유형 (8 비트 정수)
“val”을 할당 할 수 있습니다. ues “of true
또는 false
(할당 연산자 사용) :
bool foo; foo = true; if (foo) { do_something(); }
내부적으로 true
는 1
이고 false
는
, 숫자 값은 동일하게 대체 될 수 있습니다.
Arduino 및 C ++의 부울 유형은 대부분 가독성을 위해 존재하며 int
유형보다 특별한 효율성을 위해 존재하지 않습니다.
답변
공식 참조는 여기
에서 찾을 수 있습니다.
항상 true와 false를 사용하고 숫자를 사용하지 않습니다.
다음은 몇 가지 예입니다.
부울에 false resp true를 할당합니다.
bool a = true; bool b = false;
부울 값 확인 :
if (b) { // Executed when b is true } else { // Executed when b is false } if (a && b) { // Executed when a is true and b is true } if (a || b) { // Executed when a is true or b is true }
b가 false이면 a는 false이고 그렇지 않으면 a는 그대로 유지됩니다.
a &= b;
b가 참이면 a는 참이고 그렇지 않으면 a는 그대로 유지됩니다.
a |= b;
// a가 참이면 거짓이고 그 반대도 마찬가지입니다.
a = !a;
댓글
- 마지막 것은 a =! a이어야합니다 '? ~ 비트가 아닙니다.true가 정의 된 방법에 따라 ~ true는 여전히 true 일 수 있습니다.
boolean
는 Arduino 코어 라이브러리에 설정된bool
에 대한 비표준 유형 별칭이므로 Arduino와 매우 관련이 있습니다. 자세한 내용은 내 답변을 참조하십시오.