-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
마지막 예제 질문
23.02.14 18:39 작성 23.02.14 18:39 수정 조회수 189
0
#include <iostream>
using namespace std;
int main() {
cout << ((true && true) || false) << endl;
cout << ((false && true) || true) << endl;
cout << ((false && true) || false || true) << endl;
cout << ((14 > 13 || 2 > 1) && (9 > 1)) << endl;
cout << !(2314123 > 2 || 123123 > 2387) << endl;
return 0;
}
마지막 예제에서, 위와 같이 조건식을 통째로 괄호로 싸주거나, 끝에 endl없이 출력해야 빌드가 되네요.
예를들어,
cout<<(true&&true)||false<<endl;
은 error C2563: mismatch in formal parameter list
에러가 뜹니다.
cout << ((true && true) || false) << endl;
또는
cout << (true && true) || false;
로 코딩해야 빌드가 돼요.
현상만 보고 추정하기로는 endl함수가 1개의 인자만 받아야해서 그런거 같은데 맞나요?? 에러 내용이 정확히 뭔지 설명 부탁드려요
답변을 작성해보세요.
0
강민철
2023.02.16
우선순위 때문으로 보입니다.
논리 연산자(&&, ||, !)의 우선순위가 비교 연산자(<, >, ==, 등)보다 낮다는 점을 기억해보세요.
따라서 논리 연산자가 비교 연산자보다 먼저 계산될 수 있기 때문에
조건식을 올바르게 해석되지 않는 것입니다.
가령 위 예제 코드에서
cout << (true && true) || false;
는 다음과 같이 해석됩니다.
cout << (true && true)) || false;
답변 1