검색결과 리스트
매크로에 해당되는 글 1건
- 2011.03.10 매크로, 연산자 (3)
글
매크로, 연산자
사칙연산자
C언어 설계의 특징 중 하나로 친숙성을 들 수 있는데, 그 예로 일상생활에서 사용하는 연산자를
그대로 언어에 채용하였다.
12 + 14 = 26 (정수)
12.0 + 14 = 26.0 (실수)
12 + 14.0 = 26.0 (실수)
12.0 + 14.0 = 26.0 (실수)
나머지 연산자
30.0 % 10 => 컴파일 에러
증감연산자 (++, --)
증감연산자는 a++ , a--는 변수를 1씩 증가 또는 감소시키는 연산자로 각각 a = a+1 , a = a-1 과 같은 의미를 갖는다.
++a 는 앞에 연산자가 붙어 전위 연산자라 부르고, a++ 는 뒤에 연산자가 붙어 후위 연산자라고 부른다.
전위 연산자는 해당하는 문장이 평가되기 전에 작용하고, a++ 는 문장이 평가된 후 작용하는 차이가 있다.
while문과 if문의 비교문에서 후위 연산자가 사용되었을 경우, 조건문 괄호가 평가 된 후 바로 변수가 증가한다 것을 주의하자.
while (a++ > 0) {
printf("%d \n", a);
}
if (a++ > 0) {
printf("%d \n, a");
}
타입캐스팅
데이터 타입은 (표현범위가) 작은 데이터 타입에서 큰 타입으로는 데이터 손실이 없기 때문에 자동 형변환이 이루어진다.
하지만 그 반대의 경우는 큰 데이터를 작은 데이터타입에서는 표현할 수 없기 때문에 데이터 손실이 발생하기 때문에
컴파일러 경고가 발생하는데 사용자가 수동으로 형변환을 하여 경고를 없앨 수 있다.
(프로그래머가 데이터 손실을 고려했다는 것을 컴파일러에게 알리는 것임)
char ch = 'a'; int i = 1; float f = 1.0; double d = 1.0; d = ch * i * f + 3000; // 자동 형변환이 일어남.
매크로 상수, 기호상수
# 기호는 전처리 지시어라고 하며, #이 붙은 키워드는 컴파일러가 번역을 수행하기 전에 전처리기가 소스코드를 변경하는
작업을 수행하게 하는 명령이다.
#define BASE 700 // 매크로상수 선언
이 문장은 매크로 상수 라 하며 소스코드에 사용된 모든 BASE 기호는 컴파일전에 모두 700으로 대치가 된다.
프로그램에서 추후 변경될 수도 있는 간단한 수치를 매크로 상수로 선언해두면 나중에 매크로 상수 하나의 변경만으로
해당 데이터가 사용된 소스코드를 모두 변경할 수 있게 하는 장점이 있다.
매크로 상수 외에 기호상수를 사용할 수도 있다. 변수 앞에 const 키워드를 붙히면 해당 변수를 기호상수로 만들 수 있다.
기호 상수는 최초 초기화 시에만 값을 할당할 수 있으며, 이후 변경할 수 없는 변수이다.
const int BASE = 700;// 기호상수 선언
논리 연산자
AND 연산자 && 는 2개의 피연산자가 참일 경우에만 참을 반환하는 연산자이며,
OR 연산자 || 는 2개의 피연산자 중 적어도 하나가 참이면 참을 반환하는 연산자이다.
(변수가 0이 아닌 값은 참으로, 0이면 거짓으로 평가된다.)
논리연산자에서 다음과 같은 특성을 유추할 수 있다.
0 && a // a의 값에 상관없이 무조건 거짓(0)으로 평가되어, a값을 보지않음
1 || a // a의 값에 상관없이 무조건 참(1)으로 평가된어, a값을 보지않음
관계연산자
2개의 피연산자 비교하는 연산자로 다음과 같은 연산자가 있다.
< : less than (lt)
<= : less than or equal (le)
> : greater than (gt)
>= : greater than or equal (ge)
== : equal (eq)
!= : not equal (ne)
연산자 우선순위와 결합성
컴파일러는 모든 연산자에 부여된 우선순위에 따라 연산자를 순차적으로 처리한다.
연산자의 우선순위를 모두 암기할 필요는 없다. 연산자들이 평가되는 순서를 보장하기 위해서
가장 우선순위가 높은 () 연산자를 명시적으로 사용하면 좋다
동일한 우선순위의 연산자가 사용되었을 경우, 연산자가 갖는 결합성 특성에 따라 연산자가
처리된다. 오른쪽 결합성은 왼쪽에서 오른쪽 방향으로 처리되는 성질을, 왼쪽 결합성은 오른쪽에서
왼쪽으로 처리되는 특성을 갖으며, = 할당연산자는 왼쪽 결합성을 갖는다.
int a = 10, b = 20, c = 30;
res = a += b -= c += 5;
printf("a : %d, b : %d, c : %d\n", a, b, c);// a : -5, b : -15, c : 35 가 출력됨
'언어로그 > C/C++' 카테고리의 다른 글
| 함수의 이해 (0) | 2011.03.27 |
|---|---|
| 포인터의 이해 (0) | 2011.03.11 |
| 매크로, 연산자 (3) | 2011.03.10 |
| 표준입출력함수 getchar() / putchar() (0) | 2011.02.22 |
| 비표준 입출력함수 getch(), getche() (0) | 2011.02.22 |
| 표준입출력함수 printf() / scanf() (0) | 2011.02.22 |