28 – 연산자 (조건)

조건 연산자는 주어진 조건을 만족하는지에 따라 지정된 명령을 실행하는 연산자이다. 가장 간단한 조건 연산자로는 if가 있다. if문의 경우에는 해당되는 값이 참일 경우와 그렇지 않을 경우에 따라서 저리한다. 이와 같은 단순한 if의 경우에는 특정 조건이 어떤지에 따라 단순한 표현으로 처리를 할 수 있다. 예를 들어보자.

if(i > j)
{
max = i;
}
else
{
max = j;
}

이런 단순한 조건의 경우에는 굳이 이렇게 여러 문장으로 처리하기 보다는 간단히 나타낼 수 있는 표현이 있는데, 이것이 바로 조건 연산자다. 위의 예시를 조건 연산자로 표현하면 다음과 같다.

max = (i>j) ? i : j;

표현식을 보면

[수식 1] ? [수식 2] : [수식 3]

이런 식으로 되어 있고, 수식 1에 조건이 들어가며, 조건이 참일 경우에는 수식 2가, 그렇지 않으면 수식 3이 실행된다. 단순 비교와 단순 처리의 경우에 이런 처리를 사용하여 하는 경우가 많다.

아래의 예시는 키보드로 입력한 내용을 읽어서 출력하는데, 대문자를 입력하면 소문자로 변환해서 출력하는 프로그램이다.

스크린샷 2017-02-16 오후 3.03.58

27 – 연산자(콤마)

콤마 연산자는 연결되어 있는 여러 수식을 하나의 수식으로 만들기 위해 사용된다. 사실 특정한 연산작업을 하는 것보다는, 한번에 선언하거나 한번에 처리할 수 있기 위해서 작성한다고 보면 더 쉽게 볼 수 있다. 수식1, 수식2, 수식3, …, 수식n 같은 식으로 연속적으로 이용한다. 예시 코드가 상당히 간단하기 때문에 일단 예시 코드부터 올리겠다.

선언문에서도 i와 j를 똑같이 int형으로 선언하기 위해서 콤마 연산자로 동시에 선언하였고,  두 번째 문장에서는 i에 대한 연산을 순차처리하는 부분에서 두 문장을 하나의 문장으로 처리한 것이다.

나열하면

j=3;
i=j+4;

이 두 문장이 콤마 연산자를 사용함으로써 한 문장으로 된 것이다. 그래서 실행 결과가 i에서는 7, j에서는 3이 된 것이다.

콤마 연산자의 경우에는 좀 많은 코드를 보면서 ‘아, 이렇게 콤마가 쓰이는구나 정도로만 알아도 될 거 같다.

26 – 연산자(시프트)

시프트 연산자에서 있는 시프트는 말 그대로 이동한다는 뜻이다. 정수형 데이터의 비트를 이동시키기 위해 사용된다. 시프트 연산자에서는 비트를 왼쪽으로 이동시키는 좌측 시프트 연산자(<<)와 오른쪽으로 이동시키는 우측 시프트 연산자(>>)가 있다. 비트 연산과 시프트 연산의 경우에는 컴퓨터 구조 혹은 논리 이론에서 다뤘을 것이다. (…)

그래서 예시가 간단하다. 20이라는 숫자를 왼쪽 시프트와 오른쪽 시프트를 1만큼 하면 어떻게 될 지를 보여주는 예시이다. 좀 더 시프트 하고 싶다면 1 대신 다른 숫자를 넣어보고 연산 결과를 확인해 보면 된다.

25 – 연산자(비트)

비트 연산자는 컴퓨터에서 정보를 저장하는 최소 단위인 비트를 다루는 연산자이다. C언어는 비트 연산을 제공해서 정수형 데이터를 비트 단위로 다룰 수 있다. 즉, char, int, long형 데이터에서만 사용이 가능하다. 비트 연산은 장치 제어를 위한 것이나 빠른 연산을 위해서도 이용하기 때문에 은근 중요하게 여긴다. 메모리 관리에 있어서도 중요하게 이용하기도 하고…

아래의 예시는 and, or, xor 연산이 어떻게 되는지를 보여주기 위한 예시이다. 여러모로 코드가 좀 긴 편인데, 이 파일은 별도로 올리도록 하겠다.

24 – 연산자(논리)

프로그램을 작성하다 보면 한 가지 이상의 조건을 동시에 요구하는 경우가 있다. 그럴 경우에는 논리 연산자를 이용하여 처리를 하며, 논리 연산은 참 또는 거짓의 논리값을 다룬다.

논리 연산자들의 연산자는 &&(and), ||(or), !(not) 이 셋이다. 사용 예제를 보면 금방 확인할 수 있다.