표준 “ bool iv id = 대신 특수 Arduino “ 부울 ” 데이터 유형 사용 “11d7c70099″> 데이터 유형

" boolean ".

표준 C ++ 데이터 유형 " bool " 그리고 둘 중 하나를 사용하는 이유는 무엇입니까?

사용법이 동일하다면 둘 다 존재하는 이유와 Arduino 코드에서 선호하는 것은 무엇입니까?

댓글

  • 이것은 Arduino에만 국한되지 않는 기본적인 프로그래밍 질문입니다. 최종 C ++ 도서 가이드 및 목록 . 또는 Google
  • Arduino Stack Exchange에 오신 것을 환영합니다. 이 사이트를 최대한 활용하려면 arduino.stackexchange.com/Tour 에서 둘러보세요. Boolean은 true / false와 같은 바이너리를 의미합니다. " Arduino 데이터 유형 "에서 Google 검색을 수행하여 이에 대해 알아보세요.
  • 동의하지 않습니다. Arduino 특정 질문이 아닙니다. boolean는 Arduino 코어 라이브러리에 설정된 bool에 대한 비표준 유형 별칭이므로 Arduino와 매우 관련이 있습니다. 자세한 내용은 내 답변을 참조하십시오.
  • 이름을 바꾸는 것이 ' 그런 다음 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(); } 

내부적으로 true1이고 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 일 수 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다