따라서 이것은 이론적 인 질문입니다. C ++ 및이를 기반으로하는 언어 (Java, C #, PHP)에는 대부분의 이진 연산자의 결과를 첫 번째 피연산자에 할당하기위한 바로 가기 연산자 가 있습니다.
a += 3; // for a = a + 3
a *= 3; // for a = a * 3;
a <<= 3; // for a = a << 3;
하지만 부울 식을 토글하고 싶을 때는 항상 다음과 같은 것을 작성합니다.
a = !a;
a
긴 표현 일 때 짜증이납니다 .
this.dataSource.trackedObject.currentValue.booleanFlag =
!this.dataSource.trackedObject.currentValue.booleanFlag;
(예, 데메테르의 법칙, 알고 있습니다).
궁금 합니다. 단항 부울 토글 연산자가있는 언어가 있습니까? 예를 들어 a = !a
표현식을 반복하지 않고 약어 를 사용할 수 있습니까?a
!=a;
// or
a!!;
우리 언어에 적절한 부울 유형 ( bool
C ++에서 와 같이 )이 있고 a
그 유형 (C 스타일이 없음 ) 이라고 가정 해 봅시다 int a = TRUE
.
문서화 된 소스를 찾을 수 있다면 C ++ 디자이너가 bool
내장 유형 이되었을 때와 같은 연산자를 추가하는 것을 고려했는지 여부와 그 이유에 대해 결정한 이유를 알고 싶습니다 .
(참고 : 나는 어떤 사람들은 할당은 사용하지 말아야한다는 의견 것을 알고
=
것을 ++
하고 +=
유용한 사업자하지만 설계 결함 있지 않으며,하자 그냥 나는 그들이 bools까지 확장되지 이유에 그들과 초점 행복 해요 가정 것).
this.dataSource.trackedObject.currentValue.booleanFlag ^= 1;
*= -1
있지만 어떤 이유로 든보다 직관적 ^= true
입니다.
void Flip(bool& Flag) { Flag=!Flag; }
는 어떻습니까? 긴 표현이 짧아집니다.