-목차-
1. Expressions, Operators
2. 산술 연산자와 자료형
3. 형 변환 (Type Conversion)
4. 오류의 분류 (Syntax Error, Logical Error, Run-Time Error)
1. Expressions , Operators
- 수식 (Expressions) : 값을 나타내기 위한 일련의 연산자들과 피연산자들의 조합
- 연산자(Operator) : 이미 정의된 산술 혹은 논리 연산을 수행하는 기호
- 종류는 다음과 같다.
- 피연산자(Operand) : 연산의 대상이 되는 상수, 변수, 혹은 다른 수식 등
● 대입 연산자
variable = value / expression
- 왼쪽의 변수에 오른쪽의 값 또는 수식의 값을 저장하여 왼쪽 변수 값에 변화가 생기는 연산
- "같다(Equal)"는 의미가 아니다.
- 왼쪽 변수의 자료형과 오른쪽 값/수식의 자료형이 같아야 한다.
● 산술 연산자
- +(더하기), -(빼기), *(나누기), /(몫)
- % : 나머지 연산자
#include <stdio.h>
int main(void)
{
int na=5, nb, nx;
nb = 3;
nx = na + nb; // nx : 8
nx = na - nb; // nx : 2
nx = na*nb; // nx : 15
nx = na / nb; // nx : 1
nx = na % nb; // nx : 2
return 0;
}
2. 산술 연산자와 자료형
※ 산술 연산자 결과값 자료형과 피연산자와의 관계
- 두 개의 피연산자가 모두 정수형이면 결과도 정수형
- 한 개 이상의 피연산자가 부동소수형이면 그 결과는 부동소수형
ex) 2 + 3 => 5
2 + 3.14 => 2.0 + 3.14 = 5.14
12.0/5 => 12.0/5.0 = 2.4
+) / 연산자에 대해...
- 정수의 나눗셈은 결과는 몫이 되고 부동소수형 나눗셈의 결과는 부동소수점 값이 된다.
3. 형 변환 (Type Conversion)
※ 대입 연산에서 좌우 피연산자의 자료형이 다른 경우
- 우측 피연산자 자료형이 좌측 변수 자료형에 맞춰 바뀌는 형 변환이 발생한다.
- 대입 과정에서 발생하는 변환이라 대입 변환이라고도 한다. 대입 변환은 묵시적 변환이다.
+) 자료형 별 메모리 크기 (단위 Byte)
# include <stdio.h>
int main(void)
{
int na = 4, nb = 3, nx;
double da = 4.0, db= 3.2, dx;
dx = nb; // 확장 대입 변환 (double 메모리 크기가 int보다 크기에)
nx = db; // 축소 대입 변환 (int 메모리 크기가 double보다 크기에)
printf("%f %d\n",dx,nx);
dx = nb/na; // 확장 대입 변환
nx = db/da; // 축소 대입 변환
printf("%f %d\n",dx,nx);
dx = nb/da; // 오른쪽 수식에서 묵시적 확장 변환
dx = db/na; // 오른쪽 수식에서 묵시적 화장 변환
nx = nb/da; // 오른쪽 수식에서 묵시적 화장 변환
// 오른쪽 수식에서 묵시적 확장 변환한 후 대입 연산에서 축소 대입 변환이 이루어짐
printf("%f %d\n",dx,nx);
dx = (double)nb/na; //환 nb에 대한 명시적 확장 변환
dx = (int)db/na; // db에 대한 명시적 축소 변환
// 이후 대입 연산에서 축소 대입 변환
printf("%d\n",dx);
return 0;
}
ex) 섭씨와 화씨 구하기
#include <stdio.h>
int main(void)
{
int nC, nF;
printf("화씨온도를 입력하세요\n");
scanf("%d",&nF);
nC = (float)5/9 * (nF - 32);
printf("화씨 %d도는 섭씨 %d도입니다\n",nF,nC);
return 0;
}
- (float)5/9를 하면 5를 부동소수형으로 바꾸고 5/9의 값 또한 부동소수형으로 바뀐다.
- * / % 의 우선 순위가 + - 보다 높다.
- 만약 우선 순위가 같으면 좌측에서 우측으로 순서대로 계산된다.
- 우선 순위를 조정하려면 ( ) 를 이용한다.
4. 오류의 분류 (Syntax Error, Logic Error, Run-Time Error)
※ Syntax Error : 구문 오류
- 컴파일러에 의해 탐지되는 오류로서 주로 문법적 오류이다.
ex) 세미콜론을 빠뜨리는 경우, 각종 괄호 쌍이 맞지 않는 경우 등
+) 선언하지 않고 변수를 사용한 경우
※ Run-Time Error : 실행 오류
- 프로그램 실행 전에는 알기 어렵고 컴파일러에 의해 탐지되지 않으나 실행 오류 메시지와 함께 실행이 중단되는 현상이 발생한다.
ex) Divide by Zero 등
+) int a ; scanf("%f", &a); 와 같이 잘못된 FSF를 사용하면 실행 오류가 생김.
※ Logic Error : 논리 오류
- 컴파일러에 의해 탐지되지 않는 오류이나 프로그램 구동 중단이나 실행 오류 메시지가 발생하지 않음
- 잘못된 출력 형태나 계산 결과
ex) printf("%f\n", 7); : 7의 값을 float형으로 출력함은 잘못된 출력이다.
'CS > C, C++' 카테고리의 다른 글
[C/C++] 03 - 2 반복문과 배열 기초 (0) | 2021.10.17 |
---|---|
[C/C++] 03 - 1 제어 구조와 조건문 기초 (0) | 2021.10.17 |
[C/C++] 02 - 1 C 프로그램 구조와 변수, 표준 입출력 기초 (0) | 2021.10.17 |
[C/C++] 01-2 C 언어 소개와 컴파일의 이해 (0) | 2021.10.17 |
[C/C++] 01-1 컴퓨터 시스템과 프로그램의 이해 (0) | 2021.10.17 |