" 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와 매우 관련이 있습니다. 자세한 내용은 내 답변을 참조하십시오.