boostcource
모두를 위한 컴퓨터 과학 (CS50 2019) : David J. Malan
www.boostcourse.org/cs11
실습환경 : https://sandbox.cs50.io/
자료형과 형식 지정자
C언어에서는 변수가 다양한 data type(자료형)을 사용한다.
그리고 각 자료형 별로 다른 형식 지정자를 사용한다.
자료형 | 형식 지정자 | |
bool | 참/거짓 ex) true, false |
|
char | 작은 따옴표 안에 들어간 딱 한개의 문자 ex) 'a', 'Z', '?' |
%c |
string | 문자열 쌍 따옴표 안에 들어간 한 개 이상의 문자들 ex) "hello" |
%s |
int | 정수. 최대 40억 ex) -5, 28, -3, 0 |
%i |
long | int보다 큰 크기의 정수 | %li |
float | 실수. 소수점이 있는 수 ex) - 3.14, 0.0, -28.56 |
%f |
double | float보다 소수점 아래 더 많은 숫자를 가지는 실수 |
연산자
다양한 수학 연산자와 논리 연산자, 그리고 주석 등이 기호로 정의되어 있다.
- 수학 연산자
- + : 더하기
- - : 빼기
- * : 곱하기
- / : 나누기
- % : 나머지
- 논리 연산자
- && : 그리고(and)
- || : 또는(or)
- // : 주석
이제 앞서 배운 자료형, 형식 지정자, 연산자가 어떻게 사용되는지 예시를 통해 확인해보자.
예시1) 곱셈과 정수
#include <cs50.h>
#include <stdio.h>
int main(void) {
int age = get_int("what's your age?\n");
int days = age * 365;
printf("Your are at least %i days old.\n", days);
}
// ? What's your age?
// > 26
// ? Your are at least 9490 days old.
days는 age와 365를 곱한 값이므로 곱하기를 의미하는 수학 연산자 * 를 이용해 표현할 수 있다.
그리고 age는 나이이기 때문에 정수를 표현하는 int로 선언해주었는데
days 역시 정수인 365로 곱했기 때문에 정수 int로 선언할 수 있다.
때문에 printf 에서 days를 사용하기 위해서 형식 지정자로 %i 를 사용하면 된다.
예시2) 소수
#include <cs50.h>
#include <stdio.h>
int main(void) {
int price = get_float("What's the price?\n");
printf("Your total is %f.\n", price * 1.0625); // (기본) 소수점 아래 6자리까지
printf("Your total is %.2f.\n", price * 1.0625); // 소수점 아래 2자리까지
}
// ? What's the price?
// > 100
// ? Your total is 106.250000.
// ? Your total is 106.25.
price는 앞서 예시1의 age와 유사한데
곱한 값을 days처럼 별도 선언하지 않고 printf문 안에서 한 번에 연산할 수 있음을 보여준다.
이 때, 1.0625 라는 소수와 곱셈을 하기 때문에 price * 1.0625 값도 소수가 될 것이다.
때문에 형식 지정자로 %f 를 사용해준다.
예시3) 나머지
#include <cs50.h>
#include <stdio.h>
int main(void) {
int n = get_int("n: ");
if(n % 2 == 0){
printf("even\n");
} else { // n % 2 == 1
printf("odd\n");
}
}
// ? n :
// > 7
// ? odd
위는 정수 n을 입력받아 n이 짝수(even)인지 홀수(odd)인지 출력해주는 코드다.
짝수는 2로 나누었을 때 나누어 떨어지고, 홀수는 나머지 1이 발생한다는 규칙을 이용해서
나머지를 구하는 수학 연산자 % 와 조건문을 활용한 예제이다.
이렇게 수학적으로 활용이 가능하다.
예시4) 문자와 OR
#include <cs50.h>
#include <stdio.h>
int main(void){
char c = get_char("Do you agree?\n");
if(c == 'Y' || c == 'y'){
printf("Agreed.\n");
} else if (c == 'N' || c == 'n'){
printf("Not agreed.\n");
}
}
// ? Do you agree?
// > n
// ? Not agreed.
다음은 문자를 받는 예제다.
char로 선언한 c는 작은 따옴표로 감싸진 문자 하나를 받는다.
논리 연산자 || (or) 를 이용해서 Y 또는 y 를 입력받으면 동의한다는 문구를,
N 또는 n 을 입력받으면 비동의한다는 문구를 반환하도록 조건을 상세하게 지정할 수 있다.
'CS > CS50' 카테고리의 다른 글
[CS][CS50] C언어 - 하드웨어의 한계 (2) | 2023.05.26 |
---|---|
[CS][CS50] C언어 - 사용자 정의 함수, 중첩 루프 (0) | 2023.05.24 |
[CS][CS50] C언어 - C 기초 / 문자열 / 조건문과 루프 (0) | 2023.04.25 |
[CS][CS50] 컴퓨팅 사고 - 알고리즘 (0) | 2023.04.23 |
[CS][CS50] 컴퓨팅 사고 - 컴퓨터 과학 / 2진법 / 정보의 표현 (0) | 2023.04.22 |