#include <stdio.h>
int main(void) {
int a;
double b;
b = 2.4;
a = b; // 형 변환 오류 발생
a = (int)b; // 강제 형 변환
printf("%d\n", a); // 2
printf("%d\n", b); // 2.4
형 변환(Type Conversion)이란 데이터의 타입을 변경하는 것이다.
형변환 즉 Casting
은 영구적으로 변형 되는 것이 아니라 계산식에서 일시적으로 Casting
하는 것이다.
이 때 컴파일러는 Casting
하는 것을 알고 일부러 오류 메시지를 출력하지 않는다.
그러므로 a
를 출력하면 Casting
된 값을 출력하고 b를 출력하면 원래 값을 출력한다.
double a;
int b;
b = (int)a;
형변환은 주로 실수형 변수에서 정수 부분만 추출할 때 사용된다.
위 코드는 a
의 정수 부분 데이터만 b
로 넘어가는 코드이다. 물론 b = a;
로 해도 컴파일러가 알아서 캐스팅을 해주지만 그렇게 된다면 다른 프로그래머가 보았을 때 실수 인건지, 고의로 한 건지 모르므로 오해의 소지가 발생할 수 있다.
배열(Array)은 변수들의 집합이다. 예를 들어 int
형 배열의 경우, int
형 변수들이 메모리 상에 여러 개 할당된다.
#include <stdio.h>
int main()
{
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
printf("Array 3 번째 원소 : %d \n", arr[2]); // Array 3 번째 원소 : 3
return 0;
}
배열은 특정한 형(Type)의 변수들 집합이다. 배열은 아래와 같이 정의한다.
(배열 Type) (배열 이름) [원소 개수];
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
위 코드는 int
형의 10개 원소를 가지는 배열 arr
이라는 의미다. 정리하자면 이 배열은 int
형 변수 10개를 보관중이며 아래와 같은 의미이다.
문자열도 배열이므로 아래와 같이 선언할 수 있다.
char str[] = "coding";
문자열 끝은 "끝" 을 의미하는 NULL
문자 \0
을 포함한다. 따라서 문자열 변수 선언 시 \0
을 생각해서 선언해야 한다.
str[7] = [c] [o] [d] [i] [n] [g] [\0];
"상수"란 변하지 않는 값을 의미한다. const
를 사용해 상수임을 알린다.
const int a = 3;
배열의 크기는 변수로 지정할 수 없다. 아래의 코드를 컴파일하면 에러가 발생한다.
int size = 10;
int arr[size] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
하지만 변수의 값을 상수에 할당해 배열의 크기를 지정할 수는 있다.
int num = 10;
const size = num;
int arr[size] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int arr[10] = { 1,2 };
for (int i = 0; i < 10; i++)
{
printf("새로운 %d번 배열입니다.\n", arr[i]);
}
값이 없는 Index
, 3 번째 Index
부터는 값이 "0"으로 초기화 된다.
본 글은 이재범님의 모두의 코드 강좌를 정리합니다.
https://modoocode.com/18