자바스크립트를 처음 배웠을 때가 생각나는 수업이었다. for문, while문 같은 반복문이 처음에는 어려웠는데 쓰다보니 별거 아니지만 자주 쓰는 문법들이었다(특히 for문).
C는 저장하고자 하는 변수의 종류를 꼭 알려줘야 한다.
counter라는 변수에 숫자를 저장하고 싶을 때, int(정수, integer)를 써주면 된다. counter에 0을 저장(초기화)하는 코드는 아래와 같다.
int counter = 0;
C의 조건문과 JS의 조건문은 거의 비슷하다. 중괄호 위치와 안에 함수 모양이 좀 다를 뿐이다. else를 추가할 때와 else if를 추가할 때도 마찬가지다.
if (x < y)
{
printf("x is less than y\n");
}
if (x < y)
{
printf("x is less than y\n");
}
else
{
printf("x is not less than y\n");
}
if (x < y)
{
printf("x is less than y\n");
}
else if (x > y)
{
printf("x is greater than y\n");
}
else if (x == y)
{
printf("x is equal to y\n");
}
C에서도 JS와 마찬가지로 while이나 for을 통해 반복문을 구현할 수 있다.
1. i = 0으로 설정한다.
2. i는 50보다 작은가?
3. 작으면, hello world를 출력하고 i를 1 증가시킨다.
4. i는 50보다 작은가?
(반복)
?. i가 50보다 작은가?
?. 작지 않다
?. 종료
int i = 0;
while (i < 50)
{
printf("hello, world\n");
i += 1;
}
위 코드는 for문으로 더 간단하게 표현할 수 있다.
for (int i = 0; i < 50; i++)
{
printf("hello, world\n");
}
타입 | 설명 |
---|---|
bool | 불리언 표현 (예: True, False, 1, 0, yes, no) |
char | 문자 하나 (예: 'a', 'Z', '?') |
string | 문자열 |
int | 특정 크기 또는 특정 비트까지의 정수 (예: 5, 28, -3, 0) |
long | 더 큰 크기의 정수 |
float | 부동소수점을 갖는 실수 (예: 3.14, 0.0, -28.56) |
double | 부동소수점을 포함한 더 큰 실수 |
int는 대략 40억까지 셀 수 있기 때문에 40억을 쓸 일이 없는 사람(=나)은 int를 사용하면 된다.
printf 함수에서는 각 데이터 타입을 위한 형식 지정자를 사용할 수 있다(저번 포스팅에서 %s
).
형식 지정자 | 설명 |
---|---|
%c | char |
%s | string |
%i | int |
%li | long |
%f | float, double |
// int.c 파일: 나이(정수)를 받아서 출력하기
#include <cs50.h> // CS50 수업을 위해 만들어진 라이브러리
#include <stdio.h>
int main(void)
{
int age = get_int("What's your age?\n");
printf("You are at least %i days old.\n", age * 365);
}
$ make int // machine code로 바꾸기
$ ./int // 실행하기
위 예제에서 printf 함수는 %i
로 age * 365
를 받아주고 있다.
// float.c 파일: 금액 받아서 세후금액 출력하기
#include <cs50.h>
#include <stdio.h>
int main(void)
{
float price = get_float("What's the price?\n");
printf("Your total is %f\n.", price * 1.0625);
// 소수점 2번째 자리까지 나오게 하려면?
// printf("Your total is %.2f.\n", price * 1.0625);
}
$ make float // machine code로 바꾸기
$ ./float // 실행하기