검색결과 리스트
글
<연산자란?>
연산을 수행하는 기호이다. C언어에서 연산자란 프로그램의 논리식이나 산술식을 표현하고 처리하기 위해서 제공되는 다양한 기호들을 말한다.
1. 대입 연산자
데이터를 저장하는 연산자다.
<실습>
#include <stdio.h>
int main()
{
int i=0, j=0; // 변수 i와 j에 0을 대입한다.
printf("i=%d, j=%d \n", i, j); // 출력
i=10; // 변수 i 에 10을 대입 (대입연산자 = 을 사용)
j=20; // 변수 j에 20을 대입
printf("i=%d, j=%d \n", i, j);
return 0;
}
-결과-
2. 산술 연산자
산술 연산자는 말 그대로 산술(더하기, 빼기, 곱하기, 나누기, 나머지)을 수행하는 연산자이다.
<실습>
#include <stdio.h>
int main()
{
int i=2, j=4; // 변수 i에 2를 j에 4를 대입한다.
printf("i=%d, j=%d \n", i, j); // 출력
printf("i+j 연산자 결과 : %d\n", i+j); // 덧셈 연산자
printf("i-j 연산자 결과 : %d\n", i-j); // 뺄셈 연산자
printf("i*j 연산자 결과 : %d\n", i*j); // 곱셈 연산자
printf("j/i 연산자 결과 : %d\n", j/i); // 나눗셈 연산자
printf("i%%j 연산자 결과 : %d \n", i%j); // 나머지 연산자
return 0;
}
-결과-
3. 복합 대입 연산자
산술 연산자와 대입 연산자를 하나로 나타내는 기호이다.
복합 대입 연산자 | 같은 표현 | 설명 |
a=a+b | a+=b | a+b를 수행 후, a에 값을 저장 |
a=a-b | a-=b | a-b를 수행 후, a에 값을 저장 |
a=a*b | a*=b | a*b를 수행 후, a에 값을 저장 |
a=a/b | a/=b | a/b를 수행 후, a에 값을 저장 |
a=a%b | a%=b | a%b를 수행 후, a에 값을 저장 |
4. 증감 연산자
++, --기호를 이용하여 1을 증가시키거나 감소시키는 연산자이다.
증감 연산자 | 설명 |
a++ | a를 먼저 연산키기고 증가 |
++a | a를 먼저 증가 시키고 연산 |
a-- | a를 먼저 연산키기고 감소 |
--a | a를 먼저 증가 시키고 감소 |
<실습>
#include <stdio.h>
int main()
{
int i=1, j=1;
int a, b;
a=++i; // i의 값을 선 증가 후에 a에 그 값을 대입한다.
printf("%d %d \n", a, i); // 결과 2 2
b = j++; // j의 값을 선 연산(대입 연산)후에 증가시킨다.
printf("%d %d \n", b, j); // 결과 1 2
return 0;
}
-결과-
5. 관계 연산자
관계를 비교하여 참(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가 같지 않은지를 비교 |
6. 논리 연산자
논리 연산자에는 &&연산자, ||연산자, !연산자가 있다.
&&연산자는 AND연산자이며 논리곱이라 한다. 둘 중 하나라도 거짓이면 거짓으로 판단.
||연산자는 OR연산자이며 논리합이라 한다. 둘 중 하나라도 참이면 참으로 판단.
!연산자는 NOT 연산자이며 논리 부정이다 한다. 참이면 거짓이고 거짓이면 참이다. 무조건 반대!
&& 연산자 | |||
피연산자 | 연산자 | 피연산자 | 결과 |
0 | && | 0 | 0 |
0 | && | 1 | 0 |
1 | && | 0 | 0 |
1 | && | 1 | 1 |
|| 연산자 | |||
0 | || | 0 | 0 |
0 | || | 1 | 1 |
1 | || | 0 | 1 |
1 | || | 1 | 1 |
! 연산자 | |||
| ! | 0 | 1 |
| ! | 1 | 0 |
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3;
int result1, result2, result3;
result1 = (a>0) &&(b>1); // 1&&1 = 1
result2 = (a=1) || (b>1); // 0||1 = 1
result3 = !c; // !3 = 0 (0이 아닌 값들은 다 참으로 인식)
printf("result1 = %d \n", result1);
printf("result2 = %d \n", result2);
printf("result3 = %d \n", result3);
return 0;
}
-결과-
7. 조건 연산자
조건 연산자의 구조는 "조건식 ? 식1 : 식2" 이다.
이 의미는 조건식이 참일 경우 식1을 수행하고, 거짓일 경우 식2를 수행하라는 의미이다.
#include <stdio.h>
int main()
{
(2>3) ? printf("참 \n") : printf("거짓 \n"); // 2는 3보다 작으므로 거짓이 출력
return 0;
}
-결과-
8. 비트 연산자
현대의 모든 컴퓨터는 전자식 컴퓨터로 전기 혹은 전자 신호를 이용하여 저장하고 관리하는데 전류가 흐르는 상태를 1, 흐르지 않는 상태를 0으로 표현할 수 있기 때문에 모든 정보를 1과 0으로 저장하고 처리한다.
비트란?
컴퓨터는 모든 신호를 2진수로 고쳐서 기억하는데 비트는 2진수 값 하나를 저장할 수 있는 최소 메모리 공간을 말한다.
비트 1개는 나타낼 수 있는 2진수는 0 또는 1이다.
그렇다면 비트 2개로 나타낼 수 있는 2진수는? 00 01 10 11 4개이다.
즉, N개의 비트는 2의 n승 으로 나타낼 수 있는 것이다.
이러한 비트 연산자는 비트 단위로 처리하는 연산자로 하드웨어와 밀접하게 관련된 각종 처리를 쉽게 해주고, 메모리 공간을 줄여서 성능을 높여 준다.
비트 연산자 | 연산식 | 설명 | 예 |
& | a&b | 비트 단위 AND 연산 | 0&0=0, 0&1=0, 1&0=0, 1&1=1 |
| | a|b | 비트 단위 OR 연산 | 0|0=0, 0|1=1, 1|0=1, 1|1=1 |
^ | a^b | 비트 단위 XOR 연산 | 0^0=0, 0^1=1, 1^0=1, 1^1=0 |
~ | ~a | 비트 단위 NOT 연산 | ~1=0, ~0=1 |
<< | a<<2 | 왼쪽으로 2칸 이동 | 실습을 통해 알아보자 |
>> | a>>1 | 오른쪽으로 1칸 이동 | 실습을 통해 알아보자 |
<실습>
<<와 >>연산자의 실습을 해보자.
#include <stdio.h>
int main()
{
int a=10, b=10, c=-10;
int result1, result2, result3;
result1 = a<<2;
result2 = b>>2;
result3 = c>>2;
printf("result1 = %d \n", result1);
printf("result2 = %d \n", result2);
printf("result3 = %d \n", result3);
return 0;
}
<<풀이
① 여기서! 10을 2진수로 나타내면 다음과 같다.
② 0 0 0 0 1 0 1 0 이것을 왼쪽으로 두 칸 옮긴다.
③ 0 0 1 0 1 0 ? ? 이렇게 될 것이다. 왼쪽 시프트의 경우 무조건 빈 자리가 생기면 0으로 채운다.
④ 0 0 1 0 1 0 0 0 이렇게 된다. -> 십진수로 바꾸면 40이다.
>>풀이
① 여기서! 10을 2진수로 나타내면 다음과 같다.
② 0 0 0 0 1 0 1 0 이것을 오른쪽으로 두 칸 옮긴다.
③ ? ? 0 0 0 0 1 0 이렇게 될 것이다. 오른쪽 시프트의 경우 빈 자리가 생기면 양수는 0으로 채운다.
④ 0 0 0 0 0 0 1 0 이렇게 된다. -> 십진수로 바꾸면 2이다.
>>풀이 2
① 여기서! -10을 2진수로 나타내면 다음과 같다.
② 1 1 1 1 0 1 1 0 이것을 오른쪽으로 두 칸 옮긴다.
③ ? ? 1 1 1 1 0 1 이렇게 될 것이다. 오른쪽 시프트의 경우 빈 자리가 생기면 음수는 1으로 채운다.
④ 1 1 1 1 1 1 0 1 이렇게 된다. -> 십진수로 바꾸면 -3이다.
'Programming > C' 카테고리의 다른 글
C언어 - 자료형 변환 (1) | 2016.02.03 |
---|---|
C언어 - 자료형, sizeof()함수 (0) | 2016.02.03 |
C언어 - 상수(리터럴 상수, 심볼릭 상수) (0) | 2016.02.01 |
C언어 – scanf()함수 (0) | 2016.01.31 |
C언어 - printf()함수, 서식 문자, 특수 문자, 필드 폭 지정하기 (0) | 2016.01.30 |
RECENT COMMENT