-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
cout << (bValue ? 1 : 0 ) <<"입니다"; 라는 코드에서 삼항연산자에 괄호 유무 차이에 따른 오류 질문입니다.
23.04.19 16:08 작성 조회수 509
1
cout << (bValue ? 1 : 0 ) <<"입니다"; 라는 코드에서 삼항연산자에 괄호 유무 차이에 따른 오류 질문입니다.
cout << bValue ? 1 : 0 라고 입력시 잘 동작하지만 삼항연산자 이후 endl이나 추가적인 문구를 추가해보니 오류가 발생합니다. 하지만 괄호로 묶었을 땐 정상 동작을 하는것을 보고 왜 괄호가 필요한지 의문이 생겨서 질문 남깁니다.
답변을 작성해보세요.
3
Soobak
2023.04.19
안녕하세요, 답변 도우미 Soobak 입니다. 🍉
우선, 질문주신 강의 2.2 정수형(Integers) 에서는 해당 내용이 나와있지 않습니다.
의문이 생기신 학습 강의에서 질문을 해주시면, 제가 더 명확히 도움을 드릴 수 있을 것 같습니다.
답변을 드리자면, 연산자의 우선순위 때문입니다. 해당 내용에 대해서는 강의 3.1 연산자 우선순위와 결합 법칙 에서 학습하시게 됩니다. 내용이 궁금하시다면, 해당 강의의 4:48 부분에 나와 있는 연산자 우선순위 표를 참고하시면 도움이 되실 것 같습니다.
예시를 들어 설명드리면 다음과 같습니다.
cout << bValue ? 1 : 0 << endl;
위 코드에서 스트림 출력을 위해 사용하는 연산자 <<
은 삼항 연산자보다 우선순위가 높습니다.
따라서, 마치 (cout << bValue) ? 1 : 0 << endl
처럼 작동하며, (cout << bValue)
가 삼항 연산자의 조건 식에 들어가게 됩니다. 즉, 뒷 부분의 << endl
부분이 정상적으로 작동하지 않는 것입니다.
따라서,
cout << (bValue ? 1 : 0) << endl;
과 같이 괄호를 통해 <<
연산자와 삼항 연산자 사이의 우선순위를 명확하게 해주어야 하는 것입니다.
답변 1