C ++ 사양은 다음을 정의합니까?
- 부울 매개 변수에 대해 '보다 작음'연산자의 존재
- 4 개의 매개 변수 순열의 결과?
즉, 다음 작업의 결과가 사양에 정의되어 있습니까?
false < false
false < true
true < false
true < true
내 설정 (Centos 7, gcc 4.8.2)에서 아래 코드는 내가 기대하는 것을 뱉어냅니다 (C가 C를 사용하여 false를 0으로, true를 1로 표시 한 경우).
false < false = false
false < true = true
true < false = false
true < true = false
나는 대부분의 (모든?) 컴파일러가 동일한 출력을 줄 것이라고 확신하지만, 이것이 C ++ 사양에 의해 제정되어 있습니까? 또는 난독 처리가되었지만 사양 호환 컴파일러에서 true가 false보다 작다고 결정할 수 있습니까?
#include <iostream>
const char * s(bool a)
{
return (a ? "true" : "false");
}
void test(bool a, bool b)
{
std::cout << s(a) << " < " << s(b) << " = " << s(a < b) << std::endl;
}
int main(int argc, char* argv[])
{
test(false, false);
test(false, true);
test(true, false);
test(true, true);
return 0;
}
p <= q
수단 p implies q
때 p
와 q
bool 형식의있다!
<=
실수로 LEFTARROW과 같이, 그 수도 우측으로 향하는 화살표가 때때로 또는 비공식적으로 유사하게 작성 조판한다 (즉, "[물질적]에서 알 수 있듯이") "에만" =>
(A 두 배 샤프트 닮은, 즉 =
) . 왼쪽 화살표는 때때로 "if"로 읽히지 만 "if if"에 오른쪽 화살표를 사용하는 것보다 훨씬 덜 일반적이라고 생각합니다.
std::min
에std::vector<bool>
로&&
.