‘변수’는 자료를 담는 저장 공간 또는 자료를 가리키는 이름표이다. 프로그램이 실행되는 동안 자료는 컴퓨터의 메모리에 저장된다. 이때 메모리에서 자료를 찾아오기 위해 메모리의 주소가 필요한데 이 주소는 매우 복잡한 형태이다. 이때 변수는 복잡한 주소에 이름표를 달아 프로그래머가 찾아오기 쉽게 해주는 것이다.
변수의 선언과 값의 배정
변수를 선언해 줄 때는 다음과 같은 형태로 선언해주면 된다.
자료형 변수명;
int x;
float y;
자료형 변수명 = 값;
int x = 10;
float y = 0.1;
이때 변수명만 선언해주어도 되고, 변수명과 함께 값도 바로 배정해줘도 된다. 앞의 자료형에서 설명했듯이, 원하는 결과를 정확히 얻기 위해서는 상황에 맞게 알맞은 자료형에 맞게 변수를 선언해주어야 한다. 또한 절대 이미 선언한 변수명과 같은 변수명을 다시 선언하면 안된다.
대입 연산자
변수를 선언하고, 변수 안에 값을 배정할 때, ‘=’을 사용한다. 이때 왼쪽에 오른쪽 값을 대입하는 ‘=’을 대입 연산자라고 한다.
변수의 값을 출력하고 싶다면 다음과 같은 형태로 코드를 작성하면 된다.
printf(“[서식 문자]” , [인수]);
printf(“%d, num);
서식 문자란 뒤에 작성되는 인수의 값을 나타내는데, 문자는 ‘%’와 인수를 출력할 형태를 결정하는 문자가 결합한 형태이다. 인수는 쉽게 말해 서식 문자 자리에 출력돼야 하는 값 또는 변수의 이름을 적어주면 된다.
<서식문자>
서식문자 | 출력 내용 | 출력대상 자료형 |
%d | 10진 정수 | int외 여러개... 추후 추가 또는 이 칸을 제거 |
%f | 4Byte 크기의 10진 실수 | float |
%lf | 8Byte 크기의 10진 실수 | double |
%c | 문자 | char |
%s | 문자열 | char* , char 배열 |
만약 %를 출력하고 싶다면 %%를 작성해주면 %가 출력된다.
다음 예제들을 통해 자료형과 변수, 서식 문자를 이용한 변수의 출력을 동시에 이해해보자
#include<stdio.h>
int main(void)
{
int a = 10;
float b = 3.14;
char c = 'A';
printf("서식 문자로 문자열 출력 : %s \n", "나는 프로그래머다.");
printf("변수 a의 값 : %d \n", a);
printf("변수 b의 값 : %f \n", b);
printf("변수 c의 값 : %c \n", c);
return 0;
}
위 코드를 실행하면 다음과 같은 결과가 나온다.
서식 문자로 문자열 출력 : 나는 프로그래머다.
변수 a의 값 : 10
변수 b의 값 : 3.140000
변수 c의 값 : A
이 결과에서 유의 깊게 볼 점은 먼저 서식 문자로 문자열을 출력할 때, 뒤에 작성한 문자열이 %s의 자리에서 출력된 것이다. 이처럼 변수뿐만 아니라 값 자체를 적어줘도 된다. 그리고 또 다른 특이한 점은 분명 변수 b를 선언할 때 3.14를 배정했는데, 출력에는 소수점 6자리까지 0이 출력됐다. 이는 %f의 표현 범위 때문이다. 다음 예제를 통해 이를 해결하는 방법을 알아보자.
#include<stdio.h>
int main(void)
{
float x = 3.141592;
printf("소수점 출력 : %.0f \n", x);
printf("소수점 출력 : %.1f \n", x);
printf("소수점 출력 : %.2f \n", x);
printf("소수점 출력 : %.3f \n", x);
printf("소수점 출력 : %.4f \n", x);
printf("소수점 출력 : %.5f \n", x);
printf("소수점 출력 : %.6f", x);
return 0;
}
위 코드를 실행하면 x의 소수점 자리가 % 와 f 사이에 삽입된 ‘.숫자’에서 숫자만큼만 출력되는 것을 알 수 있다. 만약 소수점을 특정 자릿수까지만 출력하길 원한다면 이와 같은 방식을 사용하면 된다.
서식 문자를 이용해 소수점 자리뿐만 아니라, 전체 자릿수를 지정해 줄 수도 있다. 자릿수를 지정한다는 것은 다음과 같이 일정한 크기의 공백을 확보하여 전체적으로 출력하고자 하는 문자 또는 숫자들을 정렬시킬 수 있다.
<다섯 자리 지정 예시>
가 | 상 | 자 | 산 |
#include<stdio.h>
int main(void)
{
int a = 500;
int b = 1000;
int c = 25000;
printf("%-10s %5s \n", "name", "amount");
printf("------------------- \n");
printf("%-10s %5d \n", "Bitcoin", a);
printf("%-10s %5d \n", "Ethereum", b);
printf("%-10s %5d \n", "Ripple", c);
return 0;
}
위 코드를 실행하면 이름들은 좌측으로 정렬되고, 수량은 우측으로 정렬된다.
서식 문자 사이에 숫자를 적어주면 그 수만큼 출력하는 자릿수가 지정되고, 쉽게 생각하자면 음수라면 좌측으로 정렬되고, 양수라면 우측으로 정렬된다.
만약 지정한 자릿수보다 인수의 값이 크다면 지정된 자릿수를 무시하고 출력된다. 이처럼 출력 결과를 보기 쉽게 정렬하고 싶다면 자릿수를 미리 지정하면 된다.
마지막으로, char 자료형에 대해 다시 한번 짚고 넘어가자. char 자료형은 문자형이라고 부르나 정수를 저장하고 있다고 했다. 이를 확인하기 위해 다음 예제를 실행시켜 보자.
#include<stdio.h>
int main(void)
{
char x = 'A';
char y = 'a';
char z = '1';
printf("변수 x 문자형 출력 : %c \n", x);
printf("변수 x 정수형 출력 : %d \n", x);
printf("변수 y 문자형 출력 : %c \n", y);
printf("변수 y 정수형 출력 : %d \n", y);
printf("변수 z 문자형 출력 : %c \n", z);
printf("변수 z 정수형 출력 : %d \n", z);
return 0;
}
위 코드를 실행하면 다음과 같은 결과를 얻는다.
변수 x 문자형 출력 : A
변수 x 정수형 출력 : 65
변수 y 문자형 출력 : a
변수 y 정수형 출력 : 97
변수 z 문자형 출력 : 1
변수 z 정수형 출력 : 49
이때 정수형으로 출력한 A와 a의 ASCII 코드가 각각 65와 97이다.
심지어 문자 1의 ASCII 코드도 1이 아닌 49이므로 이 차이를 확실히 알아두자.
이를 통해 문자형에 저장된 정수를 확인할 수 있고, 컴퓨터에 문자가 전달될 때는 이 정수가 이진수로 변환되어 전달되는 것이다.
'C language' 카테고리의 다른 글
C언어) 입력 (0) | 2022.02.12 |
---|---|
C언어) 변수명 규칙 (0) | 2022.02.12 |
C언어) 자료형 (0) | 2022.02.12 |
C 언어) 이스케이프 시퀀스 (0) | 2022.01.10 |
C 언어) 출력 (0) | 2022.01.10 |