[혼공C] 2주차 (2/2) chapter 04. 연산자

회색몽구스·2024년 1월 8일
0

04-1 산술 연산자, 관계 연산자, 논리 연산자

산술 연산자와 대입 연산자

산술 연산자: +, -, *, /, %, -가 피연산자가 하나인 경우는 부호를 바꾸는 역할을 함

대입 연산자: 우선순위에 따라 다른 연산을 먼저 수행하고 그 결과를 왼쪽 변수에 저장

  • 실수 연산에는 나머지의 개념이 없으므로 나머지 연산자의 피연산자로는 반드시 정수만을 사용!

증감 연산자

  • 상수에 직접 증감 연산자를 사용할 수 없음
  • 후위 표기 a++는 다른 연산자와 함께 사용될 때 가장 나중에 연산된다고 생각하자
  • Undefined behavior ex) (++a) + a + (++a)하나의 수식에서 같은 변수를 두 번 이상 사용할 때는 그 변수에 증감 연산자를 사용하면 안됨! - 이렇게 코딩하지 마세요!

관계 연산자

  • 대입 연산자와 동등함을 나타내는 관계 연산자를 혼동하지 말라
  • 또한 같지 않음을 나타내는 관계 연산자는 !=인데 순서를 혼동하지 말라

논리 연산자

  • short-circuit rule

&& - 좌항이 거짓이면 우항은 볼 것 없이 거짓
|| - 좌항이 참이면 우항은 볼 것 없이 참
그러므로 예상치 못한 결과가 나올 수 있으니 주의해서 코딩할 것

04-2 그 외 유용한 연산자

형 변환 연산자

피연산자의 값을 복사해 일시적으로 형태를 바꾸므로 연산 후 메모리에 남아 있는 피연사자의 형태나 값은 변하지 않음

  • int형을 기본적으로 사용하고 실수 연산 결과가 필요할 때만 형 변환해서 사용하는 편이 좋음
  • 자동 형 변환 (암시적 혹은 묵시적 형 변환) 기본 규칙은 데이터 크기가 작은 값이 크기가 큰 값으로 바뀌는 것이지만, 예상치 못한 값의 변형이 생길 수 있으니 가능하면 피연산자의 형태를 같게 맞춰 사용하는 편이 좋음

sizeof 연산자

warning C4477 - sizeof 연산의 결과 값 형태와 변환 문자가 일치하지 않아 나오는 경고로 불편하면 변환 문자를 %zd로 바꾸거나, #pragma warning(disable:4477)을 소스 코드 첫 줄에 추가하자

sizeof 연산자에 괄호를 쓰지 않아도 되지만, 편의상 피연산자에 괄호로 묶어 주는 것이 좋음
하지만 함수가 아님!

복합대입 연산자

  • 왼쪽 피연산자는 반드시 변수가 와야함
  • 가장 마지막에 복합대입 연산자를 계산

콤마 연산자

한 번에 여러 개의 수식을 차례로 나열해야 할 때 사용
왼쪽부터 오른쪽으로 차례로 연산을 수행하며 가장 오른쪽의 피연산자가 최종 결과값이 됨

  • 제어문에서 조건식을 나열하는 괄호 안과 같이 세미콜론 사용이 불가능한 구조에서 사용

조건 연산자

코드를 간략히 만들어 주는 효과가 있지만 가독성이 떨어질 수 있으므로 필요한 곳에서만 사용하자

비트 연산자

& - 두 비트가 모두 1인 경우에만 1로 계산
^ - 두 비트가 서로 다른 경우만 1로 계산
| - 두 비트 중 하나라도 1이면 1로 계산
~ - 1을 0으로 바꾸고 0을 1로 바꿈
<< - 비트를 왼쪽으로
>> - 비트를 오른쪽으로

연산자 우선순위와 연산 방향

큰 흐름으로 보자면,

  • 단항 연산자 > 이항 연산자 > 삼항 연산자 순으로 연산
  • 산술 연산자 > (비트 이동 연산자) > 관계 연산자 > 논리 연산자 순으로 연산

여러 연산자를 함께 사용할 때 주저 없이 괄호를 사용해서 표현을 명확하게 합시다.

필수 미션

선택 미션

profile
끄아아아아 할 수 있다

0개의 댓글