[기본 구조]
#include<stdio.h>
int main(){
return 0;
}
- C언어를 사용하여 프로그래밍을 할 때 가장 기본적으로 작성되는 구조
01] #include <stdio.h>
- # : 전처리기로, 컴파일 하기 전에 < > 안에 있는 것을 include한다는 의미
- stdio.h
: standard input output 의 줄임말로, 표준 입출력 헤더파일이다
: stdio.h를 include 하면 입출력, 반복문, 조건문 등 C컴파일러가 제공하는 표준 함수들을 사용할 수 있다
02] int main()
- C프로그램은 main함수에서부터 실행된다
- main함수는 { }로 감싸져 있으며, 이는 함수의 시작과 끝을 의미한다
: { } 안에 실행하고자 하는 명령을 작성한다
- int main 중 int는 return 값의 자료형을 나타낸다
: 따라서 main의 return 값은 정수라는 것을 알 수 있다
03] return 0;
- return은 함수의 return값을 전달함과 동시에 현재 실행 중인 함수를 끝내는 기능을 한다
: return 0; 이후의 코드는 실행되지 않는다
- 일반적으로 0을 return하면 해당 함수가 에러 없이 정상적으로 종료되었다는 것을 의미한다
04] ;
- 문장을 작성할 때 마침표를 붙이듯이, C언어에서는 ;을 사용해 하나의 구문이 끝났음을 컴퓨터에게 알린다
05] 주석
// 한 줄 주석 처리
/*
범위 주석 처리
*/
- 주석 : 코드에 대한 자세한 설명을 작성하거나, 임시로 특정 코드를 컴파일 되지 않도록 만들 때 사용한다
1. 코드 맨 앞에 //을 사용하면 해당 줄은 모두 주석으로 처리된다
2. 여러 줄 또는 한 줄의 특정 부분만 주석처리 하고자 한다면 원하는 부분을 /* */로 감싸주면 된다
[변수]
01] 변수란?
- 변수 : 데이터를 저장할 수 있는 메모리 공간을 의미하며, 저장된 값은 변경될 수 있다
02] 변수명
- 변수명 설정
: 일반적으로 해당 변수에 저장될 데이터의 의미를 나타낼 수 있는 이름으로 설정한다
- 변수명 규칙
: 변수명은 영문자, 숫자, 언더바로만 구성된다 - Ex) check_2num, user_name
: 변수명은 숫자로 시작될 수 없다 - Ex) 3times, 8chance
: 변수명 사이에는 공백이 포함될 수 없다 - Ex) user val, change num
: 변수명은 대소문자를 구분한다 - Ex) user와 User는 다른 변수로 취급한다
: 변수명으로 예약어는 사용할 수 없다
- 예약어 : C언어에서 미리 정의된 키워드로, C언어에는 총 32개의 예약어가 있다
03] 변수의 선언
// 변수를 선언만 하고 나중에 초기화 하는 방법
int A;
...
A = 0;
// 변수를 선언과 동시에 초기화 하는 방법
int A = 0;
1. 변수를 선언만 하고 이후에 초기화 하는 방법
자료형 변수명;
...
변수 초기화;
2. 변수를 선언과 동시에 초기화 하는 방법
자료형 변수명 = 초기값;
- C언어에서는 변수를 사용하기 전에 먼저 해당 변수를 선언해야한다
: 선언되지 않은 변수를 사용하려고 하면 에러가 발생한다
- 변수는 '자료형 변수명 = 초기값'의 형태로 선언된다
: 위 코드와 같이 변수를 선언할 때부터 초기값을 설정하는 방법도 있고, 변수의 선언만 해놓은 뒤 초기화는 나중에 하는 방법도 있다
- 변수를 선언할 때 값을 초기화하지 않으면 기존값인 쓰레기값이 자동으로 들어가게된다
: 쓰레기값이 남아있으면 의도치않은 결과가 출력될 수 있으니 주의해야한다
int A = 0, B = 0; // 가능
float A1 = 0.0, B = 0.0; // 가능
int A = 0, float B = 0.0; // 불가능
- 선언하고자 하는 변수들의 타입이 같다면 여러 변수를 동시에 선언할 수 있다
: 선언하고자 하는 변수들의 타입이 서로 다르다면 변수를 동시에 선언할 수 없다
[자료형]
01] Data Type(자료형)이란?
- 타입은 자료의 형태를 의미하며, 해당 데이터가 메모리에 어떻게 저장되고 프로그램에서 어떻게 처리되어야 하는지를 명시하는 역할이다
: 저장되는 데이터 크기에 따라 필요한 메모리 공간의 크기도 달라진다
- C언어의 기본 자료형은 아래 표와 같다
- signed와 unsigned는 부호의 유무를 나타낸다
: unsigned는 음수를 표현할 수 없으므로, 양수 데이터만 저장하는 변수를 선언할 때 주로 사용한다
- 자료형을 지정할 때에는 변수의 범위보다 overflow 혹은 underflow가 발생하지 않도록 각 자료형의 최솟값과 최댓값의 범위를 고려한다
- char형 변수를 선언할 때에는 ' '를 사용해 문자를 감싸주어야한다
: Ex) char word = 'a';
- 지금 당장 모든 자료형을 외우기보다는 주로 사용하는 int, float, char정도만 알아두고 필요할 때 더 공부하는 걸 추천합니다. 한 번에 많은 걸 외우려고 하면 머리에 들어오지도 않고 복잡해집니다
[상수]
01] 상수란?
- 상수(constant)
: 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 의미한다
: 변수와 달리 상수는 프로그램이 실행되는 동안 상수에 저장된 데이터를 변경할 수 없다
- 상수는 리터럴 상수와 심볼릭 상수로 나눠진다
02] 리터럴 상수
- 5, 9, a, f와 같이 변하지 않는 데이터를 리러털 상수라고 한다
: 바로 사용하는 데이터라고 생각하면 된다
03] 심볼릭 상수
- 일반적으로 상수라고 하면 심볼릭 상수를 뜻한다
- 심볼릭 상수는 변하지 않는 '변수'이다
: 리터럴 상수는 데이터, 심볼릭 상수는 변수이다
-- 심볼릭 상수의 이름은 대문자를 사용한다 (암묵적 규칙)
: 심볼릭 상수는 선언과 초기화를 동시에 해야한다
- 심볼릭 상수의 선언
// const를 사용하여 선언
const float PI = 3.14;
// #define을 사용하여 선언
#define NUM 100
1. const : 일반적인 변수의 선언과 유사하다
const 자료형 변수명 = 초기값(상수값);
2. #define : 전처리기로 사용되어서 main함수 밖에 선언하며 ;을 쓰지 않는다
#define 변수명 상수값
[입출력]
01] 형식지정자
- 주로 사용하는 형식지정자 리스트
: 기초 스터디이므로 광범위하게는 안다루겠습니다! 지금은 기초를 다진다는 생각으로 가장 기본적인 부분만 잡아봅시다
: string은 문자열로, 나중에 배열을 다룰 때 같이 공부할 예정이니 이런게 있구나~ 하고 넘어가시면 됩니다
- 형식지정자 : 입/출력할 데이터가 어떤 타입인지 알려주는 역할을 한다
- scanf에서는 double과 float의 형식 지정자를 구분해야하지만 printf에서 실수형(double, float)은 모두 %f로 사용합니다
02] Escape Sequence
- \와 다른 문자를 결합하여 일반적인 방법으로는 표현하기 어려운 기능이나 문자를 표현할 수 있게 해주는 문자
- \는 기본 키보드의 원화 키로 사용한다
- 이외에도 여러가지의 escape sequence가 있지만, 지금은 이정도만 알고 넘어가도 됩니다
03] 출력
printf("Hello World!");
printf("int : %d, float : %f, char : %c", 5, 1.23, 'C');
// 변수를 사용한 출력데이터 작성
int A = 5;
printf("A = %d\n", A);
// 출력데이터의 자릿수 지정
float B = 1.57;
printf("%f\n", B); // 출력 결과 : 1.570000
printf("%.2f\n", B); // 출력 결과 : 1.57
- printf(" ");
: C언어의 표준 출력 함수로, <stdio.h> 헤더파일에 정의되어있다
: " " 안에 출력할 내용을 입력한다
- 예시 코드의 2번째 행과 같이 " " 안에 형식 지정자를 입력하고, 이후에 출력하고자 하는 데이터를 입력하면 형식 지정자 자리에 데이터가 입력된다
: 지정한 형식 지정자에 맞는 타입의 데이터를 입력하지 않으면 값이 제대로 작성되지 않는다
- 예시 코드의 3번째 행과 같이 출력 데이터를 변수로 지정하여 출력할 수도 있다
: 사용할 변수의 타입에 맞는 형식 지정자를 사용해야한다
- 예시 코드의 6번째 행과 같이 %[자릿수]형식지정자 형태로 작성하면 해당 출력 데이터의 자릿수를 지정할 수 있다
04] 입력
int num = 0;
scanf("%d", &num);
// 한 번에 여러 개의 데이터 입력받기
int num1 = 0, num2 = 0;
float num3 = 0.0;
// 01 (공백으로 구분하여 입력)
scanf("%d %d %f", &num1, &num2, &num3);
// 02 (enter로 구분하여 입력)
scanf("%d\n%d\n%f", &num1, &num2, &num3);
// 03 (문자로 구분하여 입력)
scanf("%d,%d,%f", &num1, &num2, &num3);
- scanf("[자릿수]형식지정자", &변수명);
: C언어의 표준 입력 함수로, <stdio.h> 헤더파일에 정의되어있다
: &는 지정한 변수의 주소를 나타내며, scanf를 사용하면 입력받은 값을 해당 주소로 저장한다
- 예시 코드의 3번째 행처럼 한 번에 여러 개의 데이터를 입력받을 수도 있다
: 입력받는 데이터를 구분하는 기본적인 방법으로는 공백 구분, 줄바꿈 구분, 문자 구분이 있다 (보통 공백 또는 줄바꿈 입력을 사용합니다)
// 하나의 입력값 나누어 저장하기
int num1 = 0, num2 = 0;
scanf("%3d%3d", &num1, &num2);
- 이 코드는 넣을까말까 하다가 이런 것도 있다~를 말씀드리려고 넣어봤습니다. 자릿수 지정만 확인하고 넘기셔도 됩니다!
- 자릿수를 지정하면 원하는 자릿수만큼 값을 나누어 저장할 수 있다
: 이 코드를 예시로, 123456을 입력하면 3자리씩 나누어서 num1에 123, num2에 456을 저장할 수 있다
[총 정리]
#include<stdio.h>
int main(){
int num1 = 0, num2 = 0;
printf("TYPE(num1 num2) : ");
scanf("%d %d", &num1, &num2);
printf("NUM1 = %d\nNUM2 = %d", num1, num2);
return 0;
}
- 지금까지 공부한 것들을 조합하면 위 코드와 같이 변수에 값을 입력 받고, 그 값을 출력하는 코드를 작성할 수 있다
'C Study' 카테고리의 다른 글
06] C언어 포인터 (0) | 2023.05.28 |
---|---|
04] C언어 배열과 함수 (0) | 2023.04.04 |
03] C언어 반복문 (0) | 2023.04.03 |
02] C언어 연산자와 조건문 (0) | 2023.04.03 |
01-1] 간단한 예제와 코드 작성 (0) | 2023.03.16 |