저는 C++이 꽤 잘못 만들어진 언어 중 하나라고 봅니다. 다양한 방식으로 프로그래밍할 수 있고 성능이 뛰어나다는 것이 장점이지만, 언어의 문법과 사용법이 지나치게 복잡합니다. C++의 대표적인 단점으로 연산자 우선순위가 있습니다.
C++ 연산자 우선순위는 직관적이지 않습니다. 언어를 만든 사람에 의해 마음대로 결정됐기 때문인데, 이 때문에 초보 프로그래머는 코드의 정확한 수행 과정조차 이해하기 어려운 경우가 많습니다. 예를 들어, b = a++이라는 코드는 평범한 생각을 하는 일반인은 상상하기 어려운 결과를 내놓습니다. 즉, a의 값이 b에 대입되고, 대입이 끝난 이후에 a의 값이 증가합니다.
덧셈과 곱셈이 함께 있는 경우, 우리는 학교에서 사칙 연산의 우선순위를 배웠기 때문에 곱셈이 먼저 계산된다는 것을 다행히도 알고 있습니다. 하지만, 이 때문에 우리는 식을 분석해야 하는 번거로움이 있습니다. 반면, 스몰토크(Smalltalk)에서는 특별한 우선순위가 없이 연산이 왼쪽에서 오른쪽으로 된다고 합니다. 처음 생각할 때엔 어색할 수도 있지만, 규칙이 단순하고 직관적이라는 점에서 C++보다 더 낫습니다.
가장 좋은 규칙은 단순하고 일관성이 있으며 직관적인 규칙입니다. 그런 점에서 볼 때, C++ 연산자 우선순위 규칙은 좋지 못한 규칙입니다.
참고:
C++ 연산자 우선순위는 직관적이지 않습니다. 언어를 만든 사람에 의해 마음대로 결정됐기 때문인데, 이 때문에 초보 프로그래머는 코드의 정확한 수행 과정조차 이해하기 어려운 경우가 많습니다. 예를 들어, b = a++이라는 코드는 평범한 생각을 하는 일반인은 상상하기 어려운 결과를 내놓습니다. 즉, a의 값이 b에 대입되고, 대입이 끝난 이후에 a의 값이 증가합니다.
덧셈과 곱셈이 함께 있는 경우, 우리는 학교에서 사칙 연산의 우선순위를 배웠기 때문에 곱셈이 먼저 계산된다는 것을 다행히도 알고 있습니다. 하지만, 이 때문에 우리는 식을 분석해야 하는 번거로움이 있습니다. 반면, 스몰토크(Smalltalk)에서는 특별한 우선순위가 없이 연산이 왼쪽에서 오른쪽으로 된다고 합니다. 처음 생각할 때엔 어색할 수도 있지만, 규칙이 단순하고 직관적이라는 점에서 C++보다 더 낫습니다.
가장 좋은 규칙은 단순하고 일관성이 있으며 직관적인 규칙입니다. 그런 점에서 볼 때, C++ 연산자 우선순위 규칙은 좋지 못한 규칙입니다.
참고:

댓글을 달아 주세요
단지 자기 생각을..맞다는 식이군요..
누구 기준 입니까? 저는 아주 이해 하기 쉽고 더 직관적인데요.
예를들어 A + B * c 있다고 했을때
님이 말씀 하신대로 A + B 부터 행하여 진다면...
모두가 알고 있듯이 곱셈부터의 우선순위가 아닌 + 부터의 우선순위가 당연시 된다면, 혼란을 초례할수 있습니다.
과연 이것을, 직관적이라 말 할수 있을까요???
저는 그저 제가 좋다고 생각하는 바를 말했을 뿐이고, 리니지님은 저와 생각이 다를 수도 있겠죠. 그런데 제 글에서 어조가 지나치게 강한 부분이 거부감을 줄 수도 있을 것 같아서, 수정해 놓도록 하겠습니다.