변수
변수란?
프로그램에서 사용할 데이터를 저장하는 공간으로 변수를 사용하기 위해서는 변수를 선언해야한다.
프로그램은 메모리의 저장되어 있는 데이터를 읽거나 수정하여 실행된다.
메모리는 데이터의 영역을 숫자로 된 주소로 구분한다.
하지만 일일히 숫자를 이용해서 코딩하기에는 어렵기 때문에,
그 주소값을 갖고있는 변수를 생성하여 그 안에 값을 넣는다.
ex)
주소 연산 : 0x8F437AB6번지의 값 = 0x481D3379번지의 값 + 0x3B51CAA5번지의 값
변수 연산 : result = a + b
변수의 종류
- 정수형 : short, int, long
- 실수형 : float, double
- 문자형 : char
- 부호 : unsigned, signed(기본값)
ex) int a, unsigned float b, signed int A
변수선언 방법
변수를 사용하기 위해서는 변수를 선언해야 한다.
변수를 선언할 때에는 어떤 형태의 변수인지 선언해야한다.
함수내에서 맨 위에서만 선언이 가능하다.
변수 이름은 알파벳(대소문자 구별), 언더바(_), 숫자만 가능하다.
변수 이름 첫글자에 숫자는 불가능하다.
ex)
#include <stdio.h>
void main()
{
short sh;
int b = 2;
unsigned int c = 3;
long lo = 4;
float fl = 5.25;
double dou = 6.7;
char ch = 'K';
printf("short형의 sh = %d\n", sh);
sh = 10;
printf("int형의 b = %d\n", b);
printf("unsigned int형의 c = %d\n", c);
printf("unsigned int형의 c = %u\n", c);
c = -3;
printf("unsigned int형의 c = %d\n", c);
printf("unsigned int형의 c = %u\n", c);
printf("long형의 lo = %ld\n", lo);
printf("float형의 fl = %f\n", fl);
printf("float형의 fl = %.1f\n", fl);
printf("double형의 dou = %lf\n", dou);
printf("char형의 ch = %c\n", ch);
}
① short sh;
☞ 2byte형 변수
☞ 변수를 선언한다.
☞ 변수를 선언할 때에는 항상 위에서 선언해야한다.
② int b = 2;
☞ 4byte형 변수
☞ 변수 b의 선언과 동시에 변수값을 2로 초기화한다.
③ unsigned int c = 3;
☞ 부호없는 정수형
④char ch = 'K';
☞ 문자형의 변수에 값을 넣으려면 ''안에 문자를 넣어야 한다.
☞ 문자대신 숫자도 넣을수도 있다.(아스키 코드)
10진수 | 16진수 | 해당문자 | 10진수 | 16진수 | 해당문자 | 10진수 | 16진수 | 해당문자 |
---|
0~31 | 00~1F | 제어문자 | 64 | 40 | @ | 97 | 61 | a |
---|
32 | 20 | Space | 65 | 41 | A | 98 | 62 | b |
---|
33 | 21 | ! | 66 | 42 | B | 99 | 63 | c |
---|
34 | 22 | " | 67 | 43 | C | 100 | 64 | d |
---|
35 | 23 | # | 68 | 44 | D | 101 | 65 | e |
---|
36 | 24 | $ | 69 | 45 | E | 102 | 66 | f |
---|
37 | 25 | % | 70 | 46 | F | 103 | 67 | g |
---|
38 | 26 | & | 71 | 47 | G | 104 | 68 | h |
---|
39 | 27 | ′ | 72 | 48 | H | 105 | 69 | i |
---|
40 | 28 | ( | 73 | 49 | I | 106 | 6A | j |
---|
41 | 29 | ) | 74 | 4A | J | 107 | 6B | k |
---|
42 | 2A | * | 75 | 4B | K | 108 | 6C | l |
---|
43 | 2B | + | 76 | 4C | L | 109 | 6D | m |
---|
44 | 2C | , | 77 | 4D | M | 110 | 6E | n |
---|
45 | 2D | - | 78 | 4E | N | 111 | 6F | o |
---|
46 | 2E | . | 79 | 4F | O | 112 | 70 | p |
---|
47 | 2F | / | 80 | 50 | P | 113 | 71 | q |
---|
48 | 30 | 0 | 81 | 51 | Q | 114 | 72 | r |
---|
49 | 31 | 1 | 82 | 52 | R | 115 | 73 | s |
---|
50 | 32 | 2 | 83 | 53 | S | 116 | 74 | t |
---|
51 | 33 | 3 | 84 | 54 | T | 117 | 75 | u |
---|
52 | 34 | 4 | 85 | 55 | U | 118 | 76 | v |
---|
53 | 35 | 5 | 86 | 56 | V | 119 | 77 | w |
---|
54 | 36 | 6 | 87 | 57 | W | 120 | 78 | x |
---|
55 | 37 | 7 | 88 | 58 | X | 121 | 79 | y |
---|
56 | 38 | 8 | 89 | 59 | Y | 122 | 7A | z |
---|
57 | 39 | 9 | 90 | 5A | Z | 123 | 7B | { |
---|
58 | 3A | : | 91 | 5B | [ | 124 | 7C | | |
---|
59 | 3B | ; | 92 | 5C | \ | 125 | 7D | } |
---|
60 | 3C | < | 93 | 5D | ] | 126 | 7E | ~ |
---|
61 | 3D | = | 94 | 5E | ∩ | 127 | 7F | □ |
---|
62 | 3E | > | 95 | 5F | _ | |
---|
63 | 3F | ? | 96 | 60 | |
---|
⑤printf("short형의 sh = %d\n", sh);
☞ %d에 넣을 인자에 변수를 넣으면 그 변수의 값이 들어간다.
⑥sh = 10;
☞ 변수의 값을 수정할 수도 있다.
⑦c = -3;
☞ unsigned형에 음수값을 넣는다.
☞ %u형으로 출력한다.
☞ %d형으로 출력할경우 다른 값이 나온다.
⑧printf("float형의 fl = %.1f\n", fl);
☞ 소수점 1자리까지 출력된다.
☞ 물론, 숫자를 바꿔서 임의로 자릿수를 정할 수 있다.
⑨printf("unsigned int형의 c = %u\n", c);
☞ unsigned형은 %u로 출력해야 안전하게 출력된다.
보조 문자
%d 정수로 출력한다.
%f 실수로 출력한다.
%c 문자로 출력한다.(작은 따음표로 사용)
%s 문자열로 출력한다.(큰 따음표로 사용)
%o 8진수 형태의 정수로 출력한다.
%x 16진수 형태의 정수로 출력한다.
%u 부호 없는 정수로 출력한다.
%ld long형 정수로 출력한다.
%lu 부호 없는 long형 정수로 출력한다.
%e 실수를 지수 형태로 출력한다.
%g %e나 %f의 형태중 글자수가 적은 쪽의 형태로 출력한다.
%% %문자를 출력한다.
♤ 보조 문자 사이에 .1을 입력하면 소수점이 한자리 까지만 출력된다.
♤ 다른 숫자로 바꾸면 그 숫자만큽 출력된다.
%.1f 소수점 1자리까지 출력한다.
%.4f 소수점 4자리까지 출력한다.
변수의 범위
char 1Byte -128 ~ 127
short 2Byte -32768 ~ 32767
int 4Byte -2147483648 ~ 2147483647
long 4Byte -2147483648 ~ 2147483647
float 4Byte -3.4 * 10^37 ~ 3.4 * 10^38
double 8Byte -1.7 * 10^307 ~ 1.7 * 10^308
(int형 변수는 컴퓨터마다 크기가 다르나 대부분 4Byte로 지정하여 쓰고 있다.)
오버플로우와 언더 플로우
선언된 변수의 값이 최대값일때 1을 더할경우, 오버 플로우가 일어나며 음수값으로 돌아선다.
선언된 변수의 값이 최솟값일때 1을 감할경우, 언더 플로우가 일어나며 양수값으로 돌아선다.
ex)
#include <stdio.h>
void main()
{
int max = 2147483647;
int min = 2147483648;
printf("max = %d\tmin = %d\n", max, min);
max = max + 1;
min = min - 1;
printf("max = %d\tmin = %d\n", max, min);
}
연습문제
1) 정수형 변수는?
(1). int
(2). float
(3). double
(4). char
2) 변수 선언 방식이 맞지 않는 것은?
(1). int a;
(2). float B1A4;
(3). double int;
(4). char I_am_Simson;
3) kor, eng, mat ave변수를 선언하여 점수와 평균를 출력하시오.
ex)
kor = 70;
eng = 80;
mat = 90;
ave = (kor+eng+mat)/3;
4) char형 변수를 이용하여 hi문자를 출력하시오.
5) char형 변수에 값을 넣은 후, printf()에 %c가 아닌 %d로 출력하시오.
6) int형 변수에 84값을 넣은 후, printf()에 %d가 아닌 %c로 출력하시오.