C/C언어 이론

(2)Data type

T_Y 2018. 6. 19. 14:37
반응형

    DataType.c


- 사용 가능한 문자

1. 영문 대소문자

2. 숫자

3. 특수문자 (기호)

4. 한글 (주석, 문자열)

5. 여백 -> space, tab, 개행 (\n 이런거)


- 예약어

C언어에서 이미 사용하고 있는 문자열(단어) -> 파란색으로 표시

이미 사용하고 있기 때문에, 우리가 사용할 수 없다.




[2진수]

- 모든 숫자를 0,1로만 표현한 숫자 체계 (2개의 숫자)

- 굳이 10진수를 2진수 값으로 변환을 해야할 필요는 없지만,

  2진수를 10진수로 변환하는 것은 '익숙'해져야 한다.




[자료형]

Data Type : 자료를 저장하는 공간(메모리)에 저장될 '값의 종류'

1bit - 0 또는 1을 저장할 수 있는 크기

1byte(8bit) - 영문 한 글자를 저장할 수 있는 크기

1KB(1024byte), 1MB(1024KB), 1GB(1024MB) ...


> C언어에서 모든 값은 '숫자'


1. 정수형 (부호 있는 정수 / 부호 없는 정수)

// 부호가 있는 경우 맨 앞 bit는 부호bit (0이면 양수, 1이면 음수)

// 음수일 경우, 그 뒤 bit 들 값들이 더해진다. (값이 커진다)

   *char (1byte/8bit) [-128 ~ 127] / [0 ~ 255] ( 2^9 - 1 = 255 )

short (2byte/16bit) [-32768 ~ 32767] / [0 ~ 65535]

  **int (4byte/32bit) [-21억 ~ 21억] / [0 ~ 42억]

long (4byte/32bit) [-21억 ~ 21억] / [0 ~ 42억]

long long (8byte/64bit) [900경...]

9000000000000000000


2. 실수형 (쉽게 소수)

   *float (4byte/32bit) [소수점 이하 6자리까지 정확도 보장]

  **double (8byte/64bit) [소수점 15자리]

long double (10byte) [소수점 19자리]

> 정수형과 실수형은 값을 다루는 방식 자체가 다르다!


--> int와 double은 C언어에서 기본적으로 사용되는 정수와 실수 자료형이다.




[변수 (Variable)]

1. 정의 : 하나의 값을 저장할 수 있는 메모리 공간

- 메모리 공간 : 프로그램이 실행되는 동안 사용하는 공간 (RAM)

2. 만드는 법 (변수 선언)

자료형 변수명 = 초기값;

자료형 변수명;   이렇게 만들 수도 있지만, 꼭 초기값을 사용한다.

    이 방법은 그냥 불가능하다고 생각하기!! (좋은 방법이 아님)

3. 변수명 규칙

- 영문자, 숫자, 언더바(_)만 가능하다. (한글이 가능하긴 한데, 사용하지 않음!!)

> 변수명 중간에 공백이 있어도 안 됨. (공백도 특수문자)

- 첫 글자는 반드시 영문이어야 한다.

- 대소문자 구분

> 너무너무 중요!!!

> 프로그래밍 언어에서는 무조건 대소문자가 구분된다. (대문자/소문자 다른 글자)

- 예약어 사용 불가

- 변수명에 의미를 부여하여 이름만 봐도 무얼 저장하고 있는지 알 수 있도록 한다.

> 너무너무너무 중요!!!

> 헝가리안 표기법 - 변수명에 자료형을 의미하는 '접두사' 붙이기

int - i, n

char - c

float - f

double - d


==> 자료형과 변수명을 통해 만들어진 공간은, 변수명으로 다룬다. (그 공간을 접근)

1. 공간에 값을 저장 (대입)

2. 공간에 들어있는 값을 사용




형식 지정이 있는 출력 : printf

- print + format : 꼭~~~ 친해지길 바랍니다...


printf("출력하고 싶은 문자열", 문자열에 삽입될 값 나열);


printf("1 + 1 = %d", 2);

> 큰 따옴표 안에 문자열을 입력하고, %d와 같은 서식문자가 있는 경우,

   문자열의 큰 따옴표가 끝난 뒤 값을 나열한다.

> %d와 같은 서식문자의 개수와 타입에 맞게 순서대로 나열


============================

형식 : %[-][0][n][.m]서식문자 []는 옵션 (선택사항)

============================

%c 정수 값을 '문자'로 출력

%d 정수 값을 10진수로 출력 (부호 있음)

%o 정수 값을 8진수로 출력

%x, %X 16진수

%f 소수 출력

%s 문자열 (string)

%p 16진수로 메모리 주소 출력

============================


문자열 안에서 특수한 기능을 하는 이스케이프 문자

\n 개행 (new line)

\t tab (탭키 만큼 간격 띄우기)

\\ \ 하나 사용

\' ' 하나 사용

\" " 하나 사용



#include <stdio.h>


void main()

{

 변수 선언 (생성)

int iNum;   정수를 저장하는 공간을 만들고, 그 이름을 iNum으로 한다.

  공간이 만들어지면, '쓰레기값'이 들어가 있다.

iNum = 10;   변수에 값 대입!

.c 소스파일은 C언어 스타일로 컴파일이 된다.

C언어 표준에서는 변수의 선언(생성) 코드 위에 다른 코드가 있으면 안 된다.

> int iNum1 = 0; 코드 위에 iNum = 10; 을 했다.

> 변수의 선언이 가장 위에 위치해야한다!!


--> 사용할 변수는 미리 위에 선언해놓고 사용하는게 깔끔하다.




int iNum1 = 0;    변수 생성과 동시에 초기값을 넣는 행위 => 초기화

  초기값은 0으로 한다.

int iNum2 = 0, iNum3 = 0;  동시에 여러 변수 선언 및 초기화

잘못된 변수명

int 001Number = 0;    숫자로 시작 X

int iNumber# = 0;     사용할 수 없는 기호

int my Number = 0;   공백 사용 불가


int MyNumber = 0;

int MyNumber = 0;   같은 이름 사용 불가 (같은 지역 내에서)

int Mynumber = 0;    대소문자가 구분이 된다.


상수

1. 값을 바꿀 수 없다. (프로그램이 실행되는 동안 변하지 않는다.)

2. 상수의 종류

정수 상수 : 10 , 0 , -3, 1 ... 등등 그냥 기입하는 숫자

실수 상수 : 10.01 , -11.123 등등

문자 상수(1개의 문자) : 'a' , '1'

문자열 상수(문자가 나열) : "abcd"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
printf("1 + 1 = %d\n"2); // 2는 정수 상수
    printf("%d + %d = %d\n"123);
    printf("1 + 2 = 3\n");
 
    printf("%f\n"10.1); // 실수 상수 출력
    printf("%c\n"'A'); // 문자 상수 출력
    printf("%s\n""ABCD"); // 문자열 상수 출력
 
    // 변수의 값을 출력할 때는, 그 변수의 타입에 맞는 서식문자를 사용한다.
    printf("iNum1 = %d\n", iNum1);
 
    iNum1 = 10;
    printf("iNum1 = %d\n", iNum1);
    // int iNum1 = 0;    --> 4byte 정수 공간 생성, 정수0을 대입, 이름을 iNum1
    // iNum1 = 10;       --> 아까 만든 iNum1 공간에 정수10을 '대입'
    // printf(~~, iNum1); -> iNum1 공간에 저장된 값(정수10)을 %d에 삽입할 때 '사용'
 
    // 공간에 값을 대입, 사용 2가지 행위 잘 구분해야 함
cs





=============================================================================================


출력 연습


1. printf() 1개만 사용하여 아래 3줄을 출력
2. 나이 값(20)은 iAge 라는 변수를 만들어서 대입하기
3. printf() 안에서 서식문자를 이용하여 치환해야 할 값


홍길동   --> 문자열
20    --> 정수 (iAge를 사용)
010-7979-8282 --> 문자열

printf("~~~~~~~", ?, ?, ?);

 

[출력결과]
이름 : 홍길동
나이 : 20세
번호 : 010-7979-8282

 


 

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
void main()
{
    int iAge = 20;
 
 
    printf("이름 : %s\n나이 : %d\n번호 : %s\n""홍길동", iAge, "010-7979-8282");
 
    system("pause");
}
 
cs

 

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

 

 


 


반응형

'C > C언어 이론' 카테고리의 다른 글

(6)Function  (0) 2018.06.20
(5)Repetitive  (0) 2018.06.20
(4)Conditional  (0) 2018.06.20
(3)Operator  (0) 2018.06.20
(1)Hello World  (0) 2018.06.19