C언어 강좌
증감 연산자
피연산자의 값을 증가(+1)시키고 감소(-1)시키는 연산자입니다.
++(증가 연산자), --(감소 연산자)의 기호를 이용하여 수치 데이터 형식에 사용합니다.
++: +1, --: -1을 뜻하는데, 이는 코드를 간결하게 하고 프로그래밍 속도를 향상시킬 수 있지만,
오히려 코드를 해석할 때 가독성을 저해할 수 있으므로 가독성을 해치지 않는 선에서 사용해야 합니다.
피연산자의 위치(++a, a++)에 따라 결과 값이 다르게 나올 수 있기 때문에 주의하여 사용해야 합니다.
++a → 선 증가, 후 연산(먼저 증가시키고 연산을 합니다.)
a++ → 선 연산, 후 증가(먼저 연산하고 증가시킵니다.)
--(뺄셈)도 마찬가지입니다.
증감 연산자를 사용해보도록 하겠습니다.
#include <stdio.h> int main(void){ int num1 = 10, num2 = 20; //증가 연산자 //num = 10 printf("%d \n", ++num1); printf("%d \n", num1); //num1 = 11 printf("%d \n", num1++); printf("%d \n", num1); //구분선 printf("---------------------\n"); //감소 연산자 //num = 12 printf("%d \n", --num1); printf("%d \n", num1); //num = 9 printf("%d \n", num1--); printf("%d \n", num1); printf("---------------------\n"); //증가 연산자 //num2 = 20 printf("%d \n", num2++); printf("%d \n", ++num2); //감소 연산자 //num2 = 22 printf("%d \n", num2--); printf("%d \n", --num2); return 0; }
다음은 출력 결과입니다.
int num1 = 10, num2 = 20;
→ 변수 num1, num2를 정수형(int)으로 선언한 뒤 초기화합니다.
num1 = 10, ++num1을 출력하면 1을 더한 11의 결과 값이 나옵니다.
num1 = 11, num1++을 출력하면 11의 값이 출력된 다음 1을 더합니다.
다음 num1 값을 출력하면 12의 결과 값이 나옵니다.
num1 = 12, --num1을 출력하면 1을 뺀 11의 결과 값이 나옵니다.
num1 = 11, num1--을 출력하면 11의 값이 출력된 다음 1을 뺍니다.
다음 num1의 값을 출력하면 10의 결과 값이 나옵니다.
num2 = 20, num2++을 출력하면 20의 값이 출력된 다음 1을 더합니다.
num2 = 21, ++num1을 출력하면 1을 더한 22의 결과 값이 나옵니다.
num2 = 22, num1--을 출력하면 22의 값이 출력된 다음 1을 뺍니다.
num2 = 21, --num1을 출력하면 1을 뺀 20의 결과 값이 나옵니다.
관계 연산자
관계를 비교해서 참(True)과 거짓(False)으로 결론을 짓는 연산자입니다.
관계 연산의 결과가 참이면 1을 반환하고, 거짓이면 0을 반환합니다.
관계 연산자 |
비교 |
설명 |
> |
a>b |
a가 b보다 큰지를 비교 |
< |
a<b |
a가 b보다 작은지를 비교 |
>= |
a>=b |
a가 b보다 크거나 같은지를 비교 |
<= |
a<=b |
a가 b보다 작거나 같은지를 비교 |
== | a==b | a와 b가 같은지를 비교 |
!= |
a!=b |
a와 b가 같지 않은지를 비교 |
관계 연산자를 사용해보도록 하겠습니다.
#include <stdio.h> int main(void){ int num1 =2, num2 = 7; int result1, result2, result3, result4; result1 = num1 < num2; printf("result1: %d\n", result1); result2 = num1 <= num2; printf("result2: %d\n", result2); result3 = num1 == num2; printf("result3: %d\n", result3); result4 = num1 != num2; printf("result4: %d\n", result4); return 0; }
다음은 출력 결과입니다.
int num1 = 2, num2 = 7;
→ 변수 num1, num2를 정수형(int)으로 선언한 뒤 초기화합니다.
result1 = num1 < num2; → 참이므로 1을 반환합니다.
result2 = num1 <= num2; → 참이므로 1을 반환합니다.
result3 = num1 == num2; → 거짓이므로 0을 반환합니다.
result4 = nu1 != num2; → num1과 num2가 같지 않으므로 1을 반환합니다.
(==의 관계 연산자와 상대적인 개념이라 생각하시면 됩니다.)
논리 연산자
논리 연산자의 종류에는 AND 연산자(&&), OR 연산자(||), NOT 연산자(!)가 있습니다.
참고로 OR 연산자(||)는 shift + 역슬래시(\)를 사용합니다.
AND 연산자(&&)
그리고(~이고)의 의미입니다.
피연산자의 결과 값이 양쪽 모두 참(1)이어야 참(1)을 반환합니다.
(거짓(0)의 값도 마찬가지로 적용합니다.)
AND 연산자(&&) |
결과 값 |
0(거짓) && 0(거짓) |
0 (거짓) |
0(거짓) && 1(참) |
0 (거짓) |
1(참) && 0(거짓) |
0 (거짓) |
1(참) && 1(참) |
1 (참) |
OR 연산자(||)
또는(~이거나)의 의미입니다.
피연산자의 결과 값이 한쪽만 참(1)이어도 참(1)을 반환합니다.
OR 연산자(||) |
결과 값 |
0(거짓) || 0(거짓) |
0 (거짓) |
0(거짓) || 1(참) |
1 (참) |
1(참) || 0(거짓) |
1 (참) |
1(참) || 1(참) |
1 (참) |
NOT 연산자(!)
논리 부정(~이 아니다)의 의미입니다.
NOT 연산자는 청개구리 같은 아이입니다.
이 귀여운 녀석은 결과 값이 참(1)이면 거짓(0)을 반환하죠.
NOT 연산자(!) |
결과 값 |
!1(참) |
0 (거짓) |
!0(거짓) |
1 (참) |
#include <stdio.h> int main(void){ int num1 = 2, num2 = 5, num3 =7; int result1, result2, result3, result4, result5; //참 = 참 && 참 result1 = (num1>0) && (num2<10); printf("result1에 저장된 값: %d\n", result1); //참 && 거짓 result2 = (num1>0) && (num2>10); printf("result2에 저장된 값: %d\n", result2); //거짓 || 거짓 result3 = (num2<=2) || (num3>8); printf("result3에 저장된 값: %d\n", result3); //거짓 || 참 result4 = (num2<=2) || (num3<8); printf("result4에 저장된 값: %d\n", result4); //거짓 = !참 result5 = !(num2<num3); printf("result5에 저장된 값: %d\n", result5); return=0; }
다음은 출력 결과입니다.
int num1 = 2, num2 = 5, num3 = 7;
→ 변수 num1, num2, num3를 정수형(int)으로 선언한 뒤 초기화합니다.
result1 = (num1>0) && (num2<10);
→ 참 && 참이므로 참(1)을 반환합니다.
result2 = (num1>0) && (num2>10);
→ 참 && 거짓이므로 거짓(0)을 반환합니다.
result3 = (num2<=2) || (num3>8);
→ 거짓 || 거짓이므로 참(1)을 반환합니다.
result4 = (num2<=2) || (num3<8);
→ 거짓 || 참이므로 참(1)을 반환합니다.
result5 =! (num2<num3);
→ 결과 값은 참(1)이므로 NOT 연산자를 통해 거짓(0)을 반환합니다.
'Code.D IT 강좌 > C언어' 카테고리의 다른 글
[C언어 강좌] 제어문 - 반복문(while문, for문, do~while문) (0) | 2017.06.01 |
---|---|
[C언어 강좌] 제어문 - 조건문(if문, switch문) (0) | 2017.05.30 |
[C언어 강좌] 산술 연산자/복합 대입 연산자 (0) | 2017.05.25 |
[C언어 강좌] scanf 함수/fflush 함수 (0) | 2017.05.24 |
[C언어 강좌] 자동 형 변환/강제 형 변환 (0) | 2017.05.24 |