인프런 커뮤니티 질문&답변
같은 우선순위의 연산 순서 질문입니다.
해결된 질문
작성
·
32
1
안녕하세요. 수업을 듣다가 이전에 트리플 변수 초기화와 관련해서 궁금증이 생겨 질문드립니다.
영상 말미에
x != y == z;
(x != y) == z;처럼 같은 우선순위는 왼쪽에서 오른쪽으로 수행된다고 말씀해주셨는데요.
5.3강 더하기, 빼기, 부호 연산자들 강의에서
int income, salaray, bonus;
income = salaray = bonus = 100;위와 같은 코드가 있었습니다.
= (대입 연산자)의 우선순위가 서로 동일하니
(((income = salaray) = bonus) = 100)
이렇게 되는건가요?
변수의 경우는 저 방식이 아닌 5.3강 수업 때처럼 오른쪽부터 대입하게 되는 건가요?
머리 속으로는 후자인거 같은데 연산자별로 연산되는 순서 방향이 다른건지 명확하게 알고 싶어서 질문 드립니다 🙏
답변 1
1
안녕하세요? 질문&답변 도우미 durams입니다.
연산자끼리 우선순위가 있는것은 잘 알고계실텐데요, 사실 동일한 우선순위인 연산자 중 어떤것을 먼저 수행할지도 규칙이 있습니다. 이를 결합법칙(Associativity)이라고 합니다. 아래 링크가 도움이 될 것 같네요.
https://en.cppreference.com/w/c/language/operator_precedence.html
표에서 맨 우측 column에 보이는 Associativity에 Left-to-right라고 나와있으면 왼쪽에서 오른쪽 순으로, Right-to-left라고 나와있으면 오른쪽에서 왼쪽 순이라는 뜻입니다.
우선순위와는 별개로, 코드에 의사를 명확히 표현하고 싶으시다면 괄호를 적극적으로 쓰시는 것도 추천드립니다.






아하 결합법칙! 마침 6.11 콤마 연산자 강의를 보고 있었는데, durams 님이 알려주신 레퍼런스 페이지를 열어서 보여주시네요.
이제 이해가 되었습니다. 감사합니다 🙇♂