심볼릭(Symbolic) 상수.

C언어 상수란? 2015. 4. 28. 09:00 Posted by 네트동자

심볼릭(Symbolic) 상수란?


- 상수를 기호화하여, 의미있는 이름으로 지어서 쓰는 상수를 의미한다.

다시말해, 리터럴 상수와 반대의 개념으로 '변수를 상수화 하는 것'이다.


심볼릭상수를 만드는 방법은 크게 두가지가 있다.

1. const 키워드를 이용하는 것.

2. 매크로 상수를 이용하는 것.


 

리터럴 상수란? 문자열 상수.

C언어 상수란? 2015. 4. 27. 09:00 Posted by 네트동자

문자열 상수란?

 

- 문자열 상수란 큰따옴표( "  " )로 묶은 하나 이상의 문자로 구성된 문자열을 의미한다.

 

 

 

다음의 예제를 통해 간단히 알아보도록 하자.

 

01: #include <stdio.h>

02: int main(void)

03: {

04: printf("문자열 상수는 %s입니다. \n", "A");

05: printf("문자열 상수는 %s입니다. \n", "10+10");

06: printf("문자열 상수는 %s입니다. \n", "Hi, everyone");

07:

08: return 0;

09: }


04행부터 06행까지 큰따옴표 안에 있는 문자, 숫자, 문자열은 

서식문자 %s로 출력가능한 <문자열 상수>임을 기억하라!


컴파일러는 큰따옴표로 묶은 문자열상수를 저장할 때,

문자열상수 맨 마지막에 끝을 알리는 종료문자 \0(10진수 0을 의미)을 자동으로 추가한다.

이것을 우리는 NULL 문자라고 부른다.


04행을 자세히 살펴보자.

04: printf("문자열 상수는 %s입니다. \n", "A");

04행을 살펴보면, A는 한개의 문자이지만, 큰따옴표(" ")로 둘러싸여 있습니다.

그러면, A는 문자상수일까, 아니면 문자열상수일까?

결론 - A는 문자열 상수다.


그 이유는 큰따옴표를 인식한 컴파일러가 A끝에 종료문자(\0)를 자동으로 추가해

서식문자 %s로 출력하도록 하기 때문이다.


못믿겠는가?

만일, 그렇다면, 문자열상수 A를 %c로 출력해보라.

출력되지 않는다는 것을 알 수 있다.


리터럴 상수란? 문자 상수.

C언어 상수란? 2015. 4. 27. 09:00 Posted by 네트동자

문자상수란?

- 작은따옴표(' ')로 묶은 문자 하나를 의미한다.

 

예를들면,

A, B, a, b, &, *, + 처럼

Keaboard로 표현할 수 있는 영문자숫자, 특수기호들이다.

 

다음 예제를 통해 간단히 알아보자.

 

01: #include<stdio.h>
02: int main(void)
03: {
04: printf("문자상수 %c %c %c입니다. \n", 'a', 'b', 'c');
05: printf("문자상수 %c %c %c입니다. \n", '!', '@', '#');

06:

07: return 0;

08: }

 

<결과값>

 

 

04행에서 알파벳 a, b, c를 서식문자 %c로 출력하고 있다.

05행에서 특수기호 ! @ # 을 서식문자 %c로 출력하고 있다.

 

우리는 바로 이 부분에서 의문을 가질수 밖에 없다.

"어? 왜, 알파벳이 상수지?"

"어? 왜, 특수기호가 상수로 정의되는거지?"

만일, 여러분께서 이러한 점들에 의문을 가진다면 ASCII 코드를 알아봐야 합니다.

이 ASCII 코드를 살펴보면,

10진수, 16진수, 문자에 관련된 코드들이다.

 

만일, 그 표를 한번 참조해본다면,

알파벳 a, b, c 그리고 특수기호 ! @ #가 각각 10진수로 얼마로 표현되어 있는가?

또 16진수로 얼마로 표현되어 있는가?

 

 

다음의 예제는 문자상수 ASCII 코드 표에 나타난 10진수 값과 16진수 값으로 출력하는 코딩이다.

 

01: #include <stdio.h>
02: int main(void)
03: {
04: printf("문자상수 %c %c %c는 \n", 'a', 'b', 'c');
05: printf("ASCII 코드 10진수로 표현한다면 %d %d %d \n", 'a', 'b', 'c');
06: printf("ASCII 코드 16진수로 표현한다면 %x %x %x \n", 'a', 'b', 'c');

07:

08: printf("\n-------------------------------------------------------------\n");

09:

10: printf("문자상수 %c %c %c는 \n", '!', '@', '#');
11: printf("ASCII 코드 10진수로 %d %d %d \n", '!', '@', '#');
12: printf("ASCII 코드 16진수로 %x %x %x \n", '!', '@', '#');

13:

14: return 0;
15: } 

 

 

 

결과값.