프로그래밍 언어에서 사용가능한 자료형은 다음과 같습니다.
<Tip!>
int는 약 양(20억), 음(20억) 총 40억을 세는 것이 가능합니다.
printf 함수에서는 각 데이터 타입을 위한 형식 지정자를 사용할 수 있습니다.
이전 포스팅에서 문자열(string)인 answer 변수의 인자를 %s로 불러 왔습니다.
이처럼 데이터는 이를 표현하는 형식 지정자가 있습니다.
<Tip2!>
C는 //
를 통해서 주석을 달 수 있습니다
주석이란 코드안에 적혀 있지만 컴퓨터가 읽지 않는 부분을 말합니다.
C에서는 특정 기능을 반복해서 사용할 때, 이를 기능화 시켜서 불러오게 하는 기능이 있습니다.
#include <stdio.h>
int get_positive_int(void);
int main(void)
{
int i = get_positive_int();
printf("%i\n", i);
}
int get_positive_int(void)
{
int n;
do
{
scanf("%d", &n);
}
while (n < 1);
return n;
}
다음의 예제에서 get_positive_int를 함수라고 지칭합니다.
각각의 줄을 line by line으로 살펴보겠습니다.
int get_positive_int(void);
:
함수가 밑에 있을 것을 알고 미리 선언을 해주는 것입니다.
만약 이 부분에 선언을 하지 않고 함수를 바로 작성해도 좋습니다.
특별히 이 함수는 입력 받는 값이 없고, int를 반환할 것임을 알 수 있습니다.
int i = get_positive_int();
:
함수가 기능을 수행하고 return한 양의 정수를 받는 부분입니다.
scanf("%d", &n);
:
정수를 입력받는 부분입니다.
while (n < 1);
:
do~while구문을 통해서 정수가 되기 전까지 반복 작업을 수행하게 해줍니다.
return n;
함수의 기능을 수행하고 돌려보낼 값을 지정하는 부분입니다.
만약 함수를 가로와 세로가 있는 이미지를 표현한다고 생각하면 2차원을 순회할 수 있어야 합니다. 하지만 일반적인 for문은 1개 방향으로만 진행이 가능함을 알 수 있습니다.
이럴경우 아래의 예제와 같이 for문을 중첩해서 사용하는 것이 가능합니다.
#include <stdio.h>
int main(void)
{
int n = 3;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("#");
}
printf("\n");
}
}
다음과 같이 코드를 작성할 경우 3*3의 #이 출력되는 것을 볼 수 있습니다.
지금까지 코드를 사용하는 것에 대해서 살펴보았는데요.
#include <cs50.h>
#include <stdio.h>
int main(void)
{
// 사용자에게 x 값 받기
float x = get_float("x: ");
// 사용자에게 y 값 받기
float y = get_float("y: ");
// 나눗셈 후 출력
printf("x / y = %.50f\n", x / y);
}
다음 코드를 작성했을 때 50번째 소수점까지 출력을 해보면
아래와 같은 결과가 나옵니다.
x: 1
y: 10
x / y = 0.10000000149011611938476562500000000000000000000000
정확한 결과는 0.1이 되어야 하지만, float 에서 저장 가능한 비트 수가 유한하기 때문에 다소 부정확한 결과를 내게 됩니다.
int는 –2,147,483,648 ~ 2,147,483,647까지 표현이 가능합니다.
만약 int n = 2,147,483,648을 넣는다면 이를 저장할 수 없어서 에러가 납니다.
우리는 프로그램을 설계할 때 다음 두개의 경우에 대해 고려를 하고 설계해야 합니다.