어서 오세요 주요 연산자에 대해 다뤘는데요
핵심적이고 이상한 사람들이죠 이제 연산자 우선순위라는
개념에 대해 얘기해보죠
이 부분은 기본적으로 연산자의 순서를 어떻게 평가할 때 사용되는데요
연산자의 우선순위는 조건과 식의 그룹을 결정하고 식이
어떻게 평가될지를 결정하죠
괄호를 사용하면 어떤 것도 이해할
필요가 없습니다 괄호는 언어 이해의 일부이기
때문에 이해해야 하는 개념이죠
따라서 선례가 평가 순서를 결정합니다 두 오퍼레이터가
공유하는 작업 순서요
예제를 통해 명확히 보여드리죠
가령, 곱셈 연산자가 부가 연산자보다 우선순위가
더 높죠
어떤 운영자는 평가 순서가 다를 수 있어요 복합문을 사용한다면 많은
다른 계산을 수행하겠죠
예를 들어 7 더하기 3 곱하기 2 같은 거요
여러 결과를 가질
수 있죠 덧셈, 곱셈
여러분은 덧셈을 먼저 해야 하는지 곱셈을 먼저 해야 하는지 아셔야 합니다 왜냐하면 어떻게
하느냐에 따라 결과가 달라지기 때문이죠
예를 들어 이 x = 7 더하기 3 곱하기 2는 각각의
실행 값을 평가할 때 순서에 따라 13이나
20이 될 수 있어요
그래서 다양한 작업을 실행하는 순서가 큰 차이를 만들 수 있죠
그래서 우선순위를 알아야 하는 거예요
C는 먼저 무엇을 선택할지 특정한 규칙을 제시하죠
이 경우엔 플러스 구성을 할까요? c가 무슨 일이 일어날지 말해줄 거예요
이상적으로 괄호 안에 래핑하면 뭘 하라고 지시할 겁니다
결정을 내리는 거죠 하지만 괄호에 넣지 않으면 프로그래밍
언어가 대신 결정을 내려요
따라서 c에서 곱셈은 덧셈 연산자보다
우선 순위가 높죠 어떻게 되느냐면 결과가 13이 돼요
이제 7 더하기 3은 10이고 2를
곱하면 20이 나오죠
7 더하기 3 곱하기 2는 7 더하기 6이니까 13이죠
그렇게 다양한 값을 가질 수 있는 거죠
애매모호하네요 플러스 먼저 해요? 곱셈 먼저 해요?
다행히도 그건 대사에 따라 결정되죠 하지만 두 가지 다른 결과가 나왔잖아요
7 더하기 3 곱하기 2 또는
7 더하기 3 곱하기 2요 잠깐 멈춘 거 보이죠?
이제 c가 후자를 할 거예요 곱셈을 먼저 할 거예요 그게
더 우선이니까요
3 곱하기 2는 6이죠 그런 다음 7을 더해요
결과 x는 13이 될 겁니다 별표는 덧셈보다
선열이 크니까요
모든 연산자에 대한 규칙이 있습니다 어떤 연산자가
다른 연산자보다 우선인가요?
선례가 있어요
곱셈과 나눗셈은 덧셈과 뺄셈보다 먼저 나와요
예를 들어 먼저 실행되는 거죠
이런 모든 우선순위를 피할 수 있고 괄호를 제공하면
언어가 결정하게 할 수 있어요
괄호는 항상 식을 가장 먼저
그룹화하죠 그래서 7 더하기 3을 괄호 안에 넣으면
항상 덧셈을 먼저 하죠
3 곱하기 2라고
하고 그걸 괄호 안에 넣으면
항상 곱셈을 하고 괄호 밖에 있는 걸 추가해요
그러니 괄호를 사용하세요 항상 괄호를 사용하세요
그렇지 않으면 언어가 대신 결정하죠 선례가 있는 단계들을 전부
외워야 해요 다음 테이블에서 보여드릴게요
오퍼레이터도 많고 우선순위도
잘 정해야 해요
그래서 매우 혼란스러울 수 있어요
이것은 언어로 암묵적 변환을 하는 것과 비슷합니다 혹은 cast연산자를
이용해서 명시적인 변환을 하는 것과도 비슷합니다 괄호를
이용하는 거죠
이 테이블을 보면∙∙∙ 잠시 후에 볼게요 먼저 동료애에
대해 얘기하고 싶어요
어소시티비티는 우선순위와 관련이 있습니다 두 오퍼레이터가
동일한 우선순위라면 어떻게 될까요? 그럼 순서는 어떻게 알아내죠?
그럼 동기를 부여해야죠 그래서 연산자가 동일한
선례 레벨을 가질 때마다 추가적인 규칙을 적용하죠
협동심은 기본적으로 왼쪽에서 시작해서
오른쪽에서 왼쪽으로 가는 거예요
만약 Operand를 공유하고 두 개가 같은 순서로 실행된다면
두 개를 같은 순서로 실행할 수 있습니다 즉,연결성률에
기반해서 말이죠 대부분의 오퍼레이터들은 왼쪽에서
오른쪽으로 순서를 정하죠 예를 하나 보여드리죠
1=2는 3과 같지 않다고 하면 ==2와
아닌 것은 연산자 느낌표 =가 동일한
우선순위죠
이 경우엔 애매모호해요 문제가 생겼어요
뭐부터 검사해야 할지 모르겠어요 1이 2인지 2가 3이
아닌지는 알 수
없어요 부울 식을 쓰니까 중요하죠
이건 부울식 표현이에요 true 혹은 false를 반환하는 거죠
여기서 할 일은 동료성을 적용하는 거죠
동등한 사람과 그렇지 않은 사람의 동등성은 왼쪽에서 오른쪽으로 나뉘죠
1 = 2를 먼저 하는 건 거짓이죠
그런 다음 false라고
해요 3과 같지
않죠 1은 2와 같고
그건 3과 같지 않죠
그래서 결과는 거짓이 되죠 왼쪽 표정이 먼저 실행되고
오른쪽으로 움직이죠
어떻게 생각하느냐면 기본적으로 이 괄호와 같아요
먼저 1이 2와 같다고 평가하세요
그게 참으로 평가되거나 거짓이면 여러분은 3이라고 말할 거예요
참이나 거짓 값이 없기
때문에 혼란스럽죠
하지만 1은 비교 연산자라는 걸 기억하세요 할당 연산자가 아니죠
여기선 변수를 안 쓰니까 더 헷갈리네요
하지만 이 숫자들을 변수에
넣는다면 이렇게 하는 거죠 x = y x = y x = y x가
1이고 y가 2라면 2는 거짓이라고요
둘은 평등하지 않으니까요 그런 다음 3이 3인
다른 변수 Z라면 x
= y는 false x = 3이라고
하는 거죠 false는
3과 같지 않아요. 그러니 거짓이겠죠
1은 2를 먼저 실행하고 결과 0은 다시 false죠
그럼 0은 3과 같지 않으니 1 참이 되겠죠
제가 처음에 false라고 했지만 0은 3과 같지 않죠 전부
false로 평가할 거예요
이 모든 게 true로 평가될 거예요 0은 3과 같지 않으니까요
0이 3과 같지 않다 제가 거짓이라고 한 건 등호가 아니기 때문이에요
하지만 그 말은 참으로 평가된다는 거죠
아주 근사하죠 이건 우리 테이블인데 모든 선례와
동기 부여 규칙이 적혀 있어요 외우기가 정말 힘드네요
다시 괄호를 사용하세요
테이블은 여기 있어요 가장 높은 순위는 맨 위에 있어요
즉, 후기 작업자들이 가장 선호하는 단계죠
그 중 하나라도 같은 방식으로 사용한다면 왼쪽에서 오른쪽으로
읽으세요
POST픽스 연산자, 괄호 같은
것이 가장 먼저 있고요
괄호 안에 뭔가를 포함시킬 때마다 효과가 나타나죠
괄호도 있고 postfix
연산자도 있죠 포인터 몇 가지는 아직
얘기 안 했죠 이 대시가 더 크다는 거요 하지만
++-는 알죠 포스트픽스에서
가장 선례가 높은 거예요
Unary
연산자에는 + 마이너스 같은 게 있죠 not를 위한 느낌표요 조금 더하기에는 물결표
+ 마이너스요 그리고 캐스팅 연산자는 Unary 연산자라 불립니다 하나의 실행 창만 갖기 때문이죠
별표 연산자는 포인터 연산자죠 &는 약간 세고
크고요
그게 두 번째로 큰 선례죠
여기선 오른쪽에서 왼쪽으로 같은
줄에 두 개가 있는지 평가하고 있어요
그런 다음 순서를 정하죠 이 순서를 외워야 해요 꽤 어려운 작업이지만 여러분께
보여드리고 싶었어요 테이블을 보여드리기
위해 그림으로 보여드리고 싶었어요 오퍼레이터가 많아요
그래서 선행 단계가 많고 대부분 동기는 좌에서
우로 나뉘어요
우측 좌측만 지원할 수 있어요
왼쪽에서 오른쪽으로 아래쪽으로
움직이죠 우측에서 좌측으로 조건부 운항사요
배정 작업자는 항상 맨 밑에 있어요 그건 항상 마지막에 평가되죠
두 개가 같다면 오른쪽부터 왼쪽까지 평가할 수 있죠
그리고 쉼표는 연산자이기도 하죠 왼쪽에서 오른쪽으로요
선례이자 동기 부여인 또 다른
개념은 다른 예제와는 다루지
않을게요 결국 항상 괄호를 사용하게 될
겁니다 그게 여러분이 원하는 거죠
하지만 언어를 완전히 이해하고 이런 개념을 이해하고 싶다면 이걸 말씀드리는 거예요
이런 세부 사항을 모르면 언어를 안다고 주장할 수 없죠
괄호를 최대한 많이 사용하세요 고마워요