c언어 프로그래밍, 기초 문법

 

프로그래밍 언어는 일반적으로 수학에서 사용하는 연산기호와 유사한 연산자들의 집합을 지원한다. 다음에 C언어에서 사용되는 여러 가지 연산자들이 있다.

 

1. 기본 연산자

 

 

연산자

기능

+

덧셈

-

뺄셈

/

나누기

*

곱하기

%

나머지 값

 

 

2. 복합 대입 연산자

 

대입 연산자(=)에 다른 연산자가 합쳐진 것이다. 예를 들어 +=, -=, /=, >=, <= 등이 있다.

이것은 자연스레 많이 사용하게 되는 연산자이므로 가볍게 알고 넘어가면 된다.

 

 

3. 단항 연산자

 

단항 연산자는 항이 하나밖에 없는 경우(피연산자가 1개)다.

연산자

기능

++, --

피연산자 값을 1 증가 또는 1 감소

-(부호 연산자)

피연산자 값에 부호 적용

 

 

4. 비교 연산자

 

비교 연산자는 밑에서 나올 조건문과 반복문에서 ‘조건식’으로 사용이 된다. 조건을 만족하면 정수 1 즉, True(참)을 반환하고, 조건을 불만족하면 정수 0 즉, False(거짓)을 반환한다.

C언어에서는 0이 아닌 모든 값을 ‘참’으로 간주한다. 여기서 모든 값이란 0이 아닌 음수를 포함한 모든 숫자, 문자 등을 의미한다. 비교 연산자에는 등가 비교와 대소 비교가 있다.

 

연산자

기능

==

같다

!=

다르다

<

크다

>

작다

>=

크거나 같다

<=

작거나 같다

 

 

5. 논리 연산자

 

연산자

기능

&&

AND연산자, 둘 다 참이면 참, 하나라도 거짓이면 거짓

| |

OR연산자, 둘 중 하나라도 참이면 참, 둘 다 거짓이면 거짓

!

참 / 거짓의 결과를 반대로

 

비교 연산자와 같이 조건문과 반복문의 ‘조건식’에서 사용된다. 조건을 만족하면 정수 1(참) 반환, 조건을 불만족하면 정수 0(거짓)을 반환한다.

OR 연산은 좌측 식이 참이면 우측식을 연산하지 않고 바로 참이 된다. AND 연산은 좌측식이 거짓이면 우측식을 연산하지 않고 바로 거짓이 된다. 이렇게 되는 이유는 불필요한 연산을 줄여 프로그램 메모리 낭비를 줄이기 위해서다. 참고로 모든 연산자들에는 우선순위가 있기에 여러 가지 연산자들을 사용할 때에는 반드시 ( )를 하는 습관을 들이는 것이 좋다. 소괄호를 제대로 하지 않으면 원하지 않는 결과가 나올 수 있다.

 

 

6. 비트 연산자

 

연산자

기능

&

AND, 둘 다 1이어야 1, 아니면 0

|

OR, 둘 중 하나만 1이면 1, 둘 다 0이면 0

^

XOR, 두 값이 다르면 1, 같으면 0

~

비트 전환, 0은 1로, 1은 0으로

<<

비트를 좌측으로 쉬프트(이동)

>>

비트를 우측으로 쉬프트(이동)

 

비트 연산은 2진수로 연산을 하며, 일반적인 연산보다 속도가 빠르다. 왜냐하면 컴퓨터는 값을 bit단위로 저장하고 있기 때문이다. 그 차이가 크지 않기 때문에 굳이 비트 연산을 사용하지 않아도 무방하다. 가독성이 떨어지기 때문에 꼭 필요한 경우에 사용하면 된다.

 

 

 

7. 조건 연산자 (삼항 연산자)

 

삼항 연산자의 형태는 ‘조건식 ? 식1 : 식2“이다.

조건식이 참(1)이면 식 1을 수행하고, 조건식이 거짓(0)이면 식 2를 수행한다. 코드에 ? 가 있다면 삼항 연산자이니 콜론(:)을 찾아 식을 구별하면 된다.

 

 

8. 형 변환

 

형변환은 자료형의 변환을 의미한다. 2가지 형태로 형 변환을 할 수 있다.

 

1) 자동 형변환

C언어에서는 기본적으로 형변환을 해주는 기능이 있다. 먼저, 정수에서 실수로 형변환이 될 경우 없던 소수점이 생긴다. 하지만 오차가 발생할 가능성이 있어 사용자가 주의를 해야 한다.

두 번째로 실수에서 정수로 변환이 될 경우 소수점 이하의 수는 소멸하고 정수 부분만 남는다.

마지막으로 큰 타입 정수를 작은 타입의 정수로 변환이 이뤄진다.

 

2) 명시적 형변환(Casting)

값 앞에 (type)을 명시하여 변환하는 방식이다. 예를 들어 (int) 3.14 --> 3처럼 실수를 명시적으로 정수 형태로 변환한다.

 

반응형

+ Recent posts