[C프로그래밍] 3.2 연산자
3.2 연산자
연산자(operator)란 임의의 자료에 대해 각종 연산을 수행하게 하는 기호를 말한다.
1 산술 연산자
피연산자에 대해 사칙연산을 포함한 각종 산술연산을 수행하는 연산자
(1) 이항 연산자
2개의 자료를 대상으로 산술적인 처리를 수행하는 연산자이다. 사칙연산 연산자와 % 연산자(나눗셈의 나머지 값을 이용하는 나머지 연산자)가 있다.
% 연산자는 정수형 자료에만 사용할 수 있고, 실수형 자료에는 사용할 수 없다.
#include <stdio.h>
int main()
{
int x, y;
x = 10;
y = 3;
printf("x + y = %d \n", x + y);
printf("x / y = %d \n", x / y);
printf("x %% y = %d \n", x % y); // %문자를 출력하기 위해 %문자를 2개 연속으로 사용
printf("y %% x = %d \n", y % x);
}
(2) 단항 연산자
1개의 자료만을 대상으로 산술적인 처리를 수행하는 연산자이다. ++, — 연산자를 증감 연산자라고도 한다.
이러한 연산은 모두 정수형 변수에만 사용되어야 하며 특히 ++, — 연산자는 사용 위치에 따라 그 기능이 달라질 수 있음에 주의해야 한다.
i++(후치연산) : i의 값을 먼저 사용한 후 1을 증가시킨다.
++i(전치연산) : i의 값을 먼저 1 증가시킨 후 사용한다.
x = i++ ⇒ x = 5, i = 6
x = ++i ⇒ x = 6, i = 6
#include <stdio.h>
int main()
{
int a, b, c;
a = b = c = 0;
a = ++b + ++c; // b와 c의 값을 1 증가하고 두 값을 더한 값을 a에 대입
printf("a = ++b + ++c 실행 후 a = %d, b = %d, c = %d \n", a, b, c);
a = b++ + c++; // c의 값을 1 증가한 후 b와 더해서 a에 대입하고 b의 값을 1 증가
printf("a = b++ + c++ 실행 후 a = %d, b = %d, c = %d \n", a, b, c);
a = b-- + --c; // c의 값을 1 감소한 후 b와 더해서 a에 대입하고 b의 값을 1 감소
printf("a = b-- + --c 실행 후 a = %d, b = %d, c = %d \n", a, b, c);
}
- 실행 결과
a = ++b + ++c 실행 후 : a = 2, b = 1, c = 1
a = b++ + c++ 실행 후 : a = 2, b = 2, c = 2
a = b-- + --c 실행 후 : a = 3, b = 1, c = 1
2 관계 연산자
#include <stdio.h>
int main()
{
int a = 4, b, c, d;
b = a > 2; // a가 2보다 큰가를 비교, 겨로가가 참이므로 b에 1대입
printf("b = %d \n", b);
c = a < 2; // a가 2보다 작은가를 비교, 결과가 참이므로 c에 0대입
printf("c = %d \n", c);
d = a == 4; // a가 4인가를 비교, 결과가 참이므로 d에 1대입
printf("d = %d \n", d);
}
- 실행 결과
b = 1
c = 0
d = 1
3 논리 연산자
#include <stdio.h>
int main()
{
int a = 4, b = 7, c, d, e;
c = a > 2 && b <= 7; // 둘다 참이므로 참(논리곱)
printf("c = %d \n", c);
d = a < 2 || b <= 7; // a가 거짓 b는 참이므로 참(논리합)
printf("d = %d \n", d);
e = !a; // a가 참(0이 아님)이므로 거짓(논리부정)
printf("e = %d \n", e);
}
- 실행 결과
c = 1
d = 1
e = 0
4 대입 연산자
#include <stdio.h>
int main()
{
int a = 10, b = 3, c = 1;
a *= (b - 1); // a = a * (b - 1)의 의미
b /= 2 + 3; // b = b / (2 + 3)이고 정수형끼리의 나눗셈이므로 결과는 0
c += 2; // c = c + 2
printf("a = %d, b = %d, c = %d", a, b, c);
}
- 실행 결과
a = 20, b = 0, c = 3
5 조건 연산자
#include <stdio.h>
int main()
{
int a = 10, b;
b = (a > 15) ? (a + 1) : (a - 1); // 조건을 만족하지 않으므로 a - 1을 수행
printf("b = %d", b);
}
- 실행 결과
b = 9
6 비트 연산자
수치를 2진수로 변환하여 bit 단위의 연산을 수행하는 연산자.
정수형 자료에서만 사용이 가능하다
7 기타 연산자
(1) sizeof() 연산자
- 지정한 자료(자료형, 상수, 변수, 수식)에 대한 기억장소의 크기를 구한다.
#include <stdio.h>
int main()
{
float a = 3.14;
// int형의 자료 크기를 출력
printf("int형의 크기는 = %ld바이트 \n", sizeof(int));
// float형인 a의 크기를 출력
printf("float형 변수 a의 크기는 = %ld바이트 \n", sizeof(a));
}
- 실행 결과
int형의 크기는 = 4바이트
float형 변수 a의 크기는 = 4바이트
(2) cast 연산자 (형변환 연산자)
'자동 형변환'과 '강제 형변환'이 있다.
자동 형변환은 컴파일러에 의해 자동으로 발생하는 형변환
강제 형변환은 cast 연산자를 사용해 프로그래머가 형변환을 명시해서 강제로 변환이 일어나는 것
- 자동 형변환
#include <stdio.h>
int main()
{
int a = 3, b = 4;
double c;
c = a / b;
printf("나눗셈 결과 : %f \n", c);
}
- 실행 결과
나눗셈 결과 : 0.000000
연산 결과의 자료형은 피연산자의 자료형(int)과 일치하기 때문에 나눗셈 결과는 0이 되고, 그 값이 double형으로 자동 변환되어 c에 저장
- 강제 형변환
#include <stdio.h>
int main()
{
int a = 3, b = 4;
double c;
c = (double)a / b;
printf("나눗셈 결과 : %f \n", c);
}
- 실행 결과
나눗셈 결과 : 0.750000
cast 연산자에 의해 a에 저장된 값을 double형으로 변환, c = 3.0 / b가 된다
Author And Source
이 문제에 관하여([C프로그래밍] 3.2 연산자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@oinkpig/C프로그래밍-3.2-연산자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)