반응형

연산자(3)

 

 

※ 복합 대입 연산자 ※

 

복합 대입 연산자 산술 연산과 대입 연산을 한꺼번에 수행하는 연산자이다.

 

두 개의 연산자를 각각 따로 사용해도 상관없지만

 

이 연산자를 사용함으로써 소스 코드의 양을 줄일 수 있을 뿐만 아니라

 

소스 코드를 더욱 명확하게 표현할 수 있게 된다.

 

-

 

test7.c
0.00MB

 

 

 

-

 

복합 대입 연산자 대입 연산자 산술 연산자를 합해서 만들기 때문에 어렵지 않게 이해할 수 있을 것이다.

 

10행에서 a += 1; 구문의 의미는 a + 1의 값 변수 a에 다시 저장하는 내용이다.

 

따라서 결괏값은 2가 된다.

 

b -= 2; 구문 또한 b + 2의 값 변수 b에 다시 저장하는 내용이다.

 

그리고 나머지 구문들도 이와 의미는 같다.

 

하지만

 

14행 e ^= 5; 구문 XOR을 의미하므로 

 

e^5 0이 되어 결과가 변수 e에 저장된다

 

그리고 이어서 등장하는 '\'(역 슬래쉬) 키를 shift를 누른 채로 누르면 '|' 기호가 나오는데 

 

영어 대문자 'i' 소문자 'L'과도 헷갈릴 수 있으나 

 

이는 OR 연산을 하는 연산자이다.

 

그리고 '&' 기호 AND 연산을 하는 연산자이다.

 

-

 

 

※ 증감 연산자 ※

 

증감 연산자 '++' '--'가 있다

 

증감 연산자를 사용할 때는 피연산자(연산에 사용되는 데이터) 연산자의 위치에 따라 연산 결과가 달라진다.

 

만약 변수 연산자 앞에 있으면 먼저 변수의 값을 사용한 뒤 증감 연산이 수행되고

 

변수 연산자 뒤에 있을 경우는 먼저 증감 연산이 수행된 뒤에 그 결괏값을 사용한다.

 

 연산자 네트워크 프로그래밍에서도 자주 사용되는 연산자이다.

 

-

 

test8.c
0.00MB

 

 

 

-

 

먼저 a++ 변수 a 다음에 ++ 연산자가 나온다.

 

이는 변수 a의 값을 사용하고 뒤에 그 값을 1만큼 증가시킨다는 의미이다.

 

 8행에서 printf문의 내용은 변수 a를 먼저 사용하여 그 값을 출력한 뒤에 변수 a의 값을 1 증가시킨다는 의미이다.

 

따라서 8행의 실행 결과로 출력되는 값을 확인해 보면

 

저장된 값의 변화 없이 1이 출력되는 것을 알 수 있다.

 

하지만

 

8행의 실행 결과 변수 a의 값 1만큼 증가되어 있는 상태이기 때문에

 

9행에서 printf() 함수를 호출하면 1이 증가된 2가 출력되고 있다.

 

-

 

11행 ++a 구문을 보면

 

11행 printf() 함수 ++a의 값을 출력하는 것으로 변수보다 증감 연산자가 먼저 나왔기 때문에

 

a의 값을 사용하기 전에 먼저 변수 a의 값 1을 증가시킨 뒤에 변수 a의 값을 사용한다.

 

그리고 출력 결과를 확인해 보면 이전 값인 2에서 1이 증가한 3이 출력되었다.

 

그리고 12행 printf() 함수에서 다시 변수 a의 값을 출력하고 있는데 

 

이번에는 변수 a의 값이 변하지 않고 출력되었다.

 

-

 

"--" 연산 "++" 연산과 같이 연산자와 피연산자인 변수의 위치에 따라

 

연산이 먼저 이루어질지 아니면 값을 먼저 취할지 결정하게 된다.

 

위의 코드 중에서 --b ++a와 같이 b의 값에서 1을 먼저 뺀 다음 변수 b를 사용한다는 의미이다.

 

해당 결과는 10에서 1을 뺀 9가 출력되는 것을 알 수 있고

 

이미 연산을 수행했기 때문에 이어서 변수 b의 값을 출력할 때 변함없이 9가 출력되는 것을 알 수 있다.

 

관계 연산자 논리 연산자 그리고 조건 연산자 조건문 포스팅에서 더 배워보자

반응형

'시작하지 말았어야 했던 것 > C언어 기본 문법' 카테고리의 다른 글

7. 조건문  (0) 2021.02.01
6. 연산자(4)  (0) 2021.02.01
4. 연산자(2)  (0) 2021.02.01
3. 연산자  (0) 2021.02.01
2. 변수와 자료형(2)  (0) 2021.02.01

+ Recent posts