1. 수식과 연산자의 개념
가. 수식(Expression)
상수, 변수, 연산자의 조합
수식에서 연산자(operator)를 제외한 상수나 변수를 피연산자(operand)라고 함.
수식은 결과 값을 가짐.
나. 연산자 분류
1) 기능에 따른 분류
대입 연산자, 산술 연산자, 부호 연산자, 증감 연산자, 관계 연산자, 논리 연산자, 조건 연산자, 콤마 연산자, 비트 연산자, sizeof 연산자, 형변환 연산자, 포인터 연산자, 구조체 연산자 등
2) 피연산자 수에 따른 분류
단항 연산자: 피연산자의 수가 1개
이항 연산자: 피연산자의 수가 2개
삼항 연산자: 피연산자의 수가 3개
3) 연산자 우선순위(precedence)
2. 산술연산자
가. 정수 연산
1) 산술 연산자
컴퓨터의 가장 기본적인 연산
덧셈, 뺄셈, 곱셈, 나눗셈 등의 사칙 연산을 수행하는 연산자(+, -, *, /, %)
2) 정수 사칙연산
피연산자가 모두 정수인 경우, 결과도 정수가 됨.
int a, b;
double c;
a = 5;
b = 2;
c = a / b;
printf("%f\n", c); // 2.000000 (2.5가 아님)
나머지 연산(%)의 피연산자는 반드시 정수여야 함.
나. 실수 연산
1) 실수 사칙연산
피연산자 중 하나 이상이 실수인 경우 결과는 실수가 됨.
printf("%d\n", 10 + 5.); // 에러
printf("%f\n", 10 + 5.); // 15.000000
다. 대입 연산자(Assignment Operator)
왼쪽 변수에 오른쪽 수식의 결과값을 저장
변수(variable) = 수식(expression);
int a = 1;
int b = 2;
a = b = 3;
printf("a=%d, b=%d\n", a, b); // a=3, b=3
3. 형변환
가. 자동 형변환
실행 중에 데이터의 타입을 변경하는 것
정수형 상수를 실수형 변수에 저장 가능(올림 변환, promotion)
double a;
a = 3;
printf("a=%f\n", a); // a=3.000000
실수형 상수를 정수형 변수에 저장 가능(내림 변환, demotion)
int a;
a = 3.14;
printf("a=%d\n", a); // a=3
정수 연산 시 char형이나 short형의 경우, 자동적으로 int형으로 변환하여 계산
int a;
char b;
short c;
a = 3;
b = 'a'; // 97
c = 5;
printf("a+b+c=%d\n", a+b+c); // a+b+c=105
수식에서 서로 다른 자료형이 혼합되어 사용되는 경우, 더 큰 자료형으로 자동 형변환되어 계산
int a;
char b;
short c;
double d;
a = 3;
b = 'a';
c = 5;
d = 3.14;
printf("a+b+c+d=%f\n", a+b+c+d); // a+b+c+d=108.140000
나. 명시적 형변환(cast 연산자)
괄호 안에 특정 타입명을 넣어 사용하여 그 타입으로 변환
int a = 5;
int b = 2;
printf("a/b=%f\n", (double)a/b); // a/b=2.500000