배운 내용
- 입출력 (printf, scanf)
- 형식 지정자
- 변수와 자료형
- 연산자의 종류
[C언어의 입력과 출력]
1. 입력 - printf()
콘솔 창에 특정 문자, 문자열, 변수 등을 출력할 때 사용한다.
printf( )의 이름은 출력(print)과 형식(format)이 합쳐져 만들어진 것이다.
printf( ) 함수를 사용하기 위해서는 1행과 같이 stdio.h라는 헤더 파일이 포함되어야 한다.
stdio.h란 Standard Input/Output library (표준입출력 라이브러리)의 약어이다.
(1) 제어 문자, 이스케이프 시퀀스(Escape Sequence)
제어 문자(이스케이프 시퀀스)란 특정 문자를 출력하고자 할 때 사용하는 문자이다.
[예제]
#include <stdio.h>
main(){
printf("수평탭 입력 전\n");
printf("\t수평탭 입력 후");
}
2. 출력 - scanf() / scanf_s()
C언어에서 기본적으로 입력을 받기 위해 사용하는 함수이다.
scanf( )의 이름은 스캔(scan)과 형식(format)이 합쳐져 만들어진 것이다.
scanf( )에서 사용 가능한 서식 지정자는 printf( )와 동일하다.
입력 받을 값의 자료형에 해당하는 서식 지정자를 큰따옴표(“ ”) 내부에 포함시킨다.
출력은 하지 않으므로 printf( )처럼 출력 데이터를 첨가하거나, 특수 문자를 포함시키지 않는다.
BOF(버퍼 오버 플로우) 취약점이 발생할 수 있어, sacnf_s() 함수로 대체되어 사용되고 있다.
※ scanf 사용 시 주의점
1. 값이 입력될 변수의 이름 앞에 참조 연산자 ‘&’를 붙여야 한다.
‘&’ 연산자 : 변수의 메모리 주소를 알려주는 표현
2. scanf() 사용 후 에러가 난다면 아래의 구문을 메인 함수 위에 선언해야 한다.
#define _CRT_SECURE_NO_WARNINGS
3. 인자와 인자를 구분할 때는 ‘,’ (콤마)를 사용하여 구분해야 한다.
scanf_s("%d", num);
(1) 형식(서식) 지정자
형식(서식) 지정자란 어떤 정보를 어떻게 해석할지 정해주는 문자이다.
[예제]
#include <stdio.h>
main() {
int num = 0;
char a1;
printf("정수 입력: ");
scanf_s("%d", &num);
rewind(stdin);
printf("단일 문자 입력: ");
scanf_s("%c", &a1, 1);
printf("\n입력된 문자: %d, %c", num, a1);
}
[변수와 자료형]
1. 변수
변수란 데이터를 저장하기 위한 공간이다.
변수에 들어갈 데이터의 종류에 따라 자료형(=변수 타입)이 달라진다.
변수 공간 | int_a | float_b | char_c | str_d |
변수에 들어가는 데이터 |
↑ 5 |
↑ 1.2 |
↑ A |
↑ apple |
2. 자료형
자료형이란 저장되는 데이터의 종류에 따른 형태이다.
저장되는 값의 종류와 범위에 따라 다르게 표현한다.
↓논리적 오류
[예제]
#include <stdio.h>
main() {
int max_num = 2147483647;
printf("%d", max_num);
max_num += 1;
printf("\n%d", max_num);
}
- 4행에서 int형 변수에 저장할 수 있는 최대 숫자인 2,147,483,647을 저장
- 8행에서 1을 더하면 저장 가능한 값의 범위를 넘게 되어 오버플로우 발생
해결책: 더 큰 정수를 저장하기 위해 longlong을 이용해 변수를 선언한다.
[연산자]
1. 연산자 (Operator)
주어진 식을 계산하여 결과를 산출하는 과정을 연산이라고 하고, 연산을 수행하는 기호를 연산자라고 한다.
연산식 : 연산자(operator)와 피연산자(operand)의 조합
(1) 연산자의 종류
'Programming Language > C' 카테고리의 다른 글
C언어 멘토링 | 5주차 [과제] (0) | 2022.05.16 |
---|---|
C언어 멘토링 | 4주차 [과제] (0) | 2022.05.07 |
C언어 멘토링 | 3주차 [과제] (0) | 2022.05.03 |
C언어 멘토링 | 2주차 [과제] (0) | 2022.04.07 |
C언어 멘토링 | 1주차 [과제] (0) | 2022.04.06 |