[C언어] C언어 기초 :: main 함수, 메모리 크기, 자료형, 상수, 조건문, 반복문, 입출력, 사용자 정의 함수
2023. 3. 17. 22:51ㆍC언어
728x90
반응형
hello, C..! 😀
- C언어는 메모리 주소에 직접 접근할 수 있다는 점에서 강력한 언어가 되며 다양한 운영체제 및 언어들의 기본이 되고 있다.
- 고급 언어에 속하면서도 거의 어셈블리어 취급을 받고 있다 ㅋㅎ ㅜ,,
C언어의 기초가 되는 부분들을 훑어보자 📖
1. main 함수 작성하기
#include <stdio.h>
int main(void)
{
printf("hello world\n");
return 0; // main 함수의 반환값을 int로 정했으니, 함수를 종료할 때 정수를 반환해줘야 한다.
}
- main 함수는 프로그램이 실행될 때 가장 첫번째로 실행되는 부분이다.
int main(void)
와return 0
을 약속처럼 동일하게 쓴다.
<stdio.h> 라이브러리
printf
같은 함수를 사용하려면 이 라이브러리를 추가해줘야 한다.- standard input output header file을 의미하는 stdio.h를 추가해야
printf, scanf
같은 입력 출력 함수를 사용할 수 있다.
return
main
앞에 작성한int
가 main 함수의 반환값이다.
함수를 종료할 때 정수를 반환해줘야 한다.
2. 메모리 크기 확인하기
sizeof
를 사용하면 변수가 차지하는 메모리 크기 리턴해준다.
printf("변수 x의 메모리 크기는 %d입니다." , sizeof(x)); // 변수 x의 메모리 크기는 4입니다.
- int와 float는 4바이트를 차지하고, double은 8바이트를 차지한다.
- 실수
123456789.123456789
를 float과 double 변수에 담으면 출력 결과가 다르다.
👉float
는 4바이트를 차지해 표현 가능한 범위가 작아서 쓰레기 값이 들어가 있고,
👉double
은 8바이트를 차지해서, 값을 제대로 출력해주고 있다!
float y = 123456789.123456789;
double z = 123456789.123456789;
printf("y = %.2f\n", y); // y = 123456792.00
printf("z = %.2f\n", z); // z = 123456789.12
overflow
- int형이 가질 수 있는 제일 큰 값
INT_MAX
에 1을 더하면 최솟값이 되어버린다.int x = INT_MAX; // C언어에서 int형이 가질 수 있는 제일 큰 값.약 20억 printf("int형의 최댓값 x는 %d입니다.\n", x); // int형의 최댓값 x는 2147483647입니다. printf("x+1은 %d입니다.\n", x+1); // x+1은 -2147483648입니다. -> 최솟값이 되었다.
3. Data Types
자료형의 종류
- 사용자 정의 자료형 User defined
- 파생 자료형 Derivied
- 원시 자료형 Primitive
이 중에서 원시 자료형을 알아보자!
원시 자료형에는 char, int, float, double, void
이렇게 다섯가지가 있다.
char
- char는 문자를 표현한다.
- string 자료형은 따로 없다, string을 나타내려면 char 배열을 써야 한다.
char x = 'A';
printf("%c", x); // A
- 내부적으로는 숫자(아스키 코드)로 구성되기 때문에 숫자를 넣으면 그에 해당하는 문자를 출력할 수 있다.
char y = 65;
printf("%c", y); // A
- int로 변수를 만들어놓고, 출력할 때
%c
를 적어주면 아스키코드에 해당하는 문자로 출력된다.
int z = 65;
printf("%c", z); // A
- 반대로 char로 선언하고
%d
로 출력하면 정수형으로 출력된다.
char a = 'B';
printf("%d", a); // 66
int
%d
는 10진수,%o
는 8진수,%x
는 16진수로 출력한다.
int num = 100;
printf("10진수: %d\n", num); // 10진수: 100
printf("8진수: %o\n", num); // 8진수: 144
printf("16진수: %x\n", num); // 16진수: 64
void
- 자료형 자체가 없다는 의미이다.
4. 상수 선언
#define MONTHS 12
#define 상수이름 값
으로 상수를 선언할 수 있다.- 이름은 MONTHS, 값은 12인 상수가 선언된다.
5. 조건 연산자
조건 ? True일 때 : 거짓일 때;
- JavaScript의 삼항 연산자와 똑같다. 반가워!!!!!!🥺
int x = 50, y = 30;
int absoluteX = (x > 0) ? x : -x;
printf("절댓값 : %d\n", absoluteX); // 절댓값 : 50
int max = (x > y) ? x : y;
printf("최댓값 : %d\n", max); // 최댓값 : 50
int min = (x < y) ? x : y;
printf("최솟값 : %d\n", min); // 최솟값 : 30
6. math 라이브러리
pow(), abs()
등을 쓰려면 라이브러리를 먼저 불러주자
#include <math.h>
pow()
예시double x = pow(2.0, 20.0); // 2의 20제곱 printf("2의 20 제곱은 %.0f", x); // 2의 20 제곱은 1048576
7. 조건문
if ~ else if ~ else
- 조건문도 JS랑 똑같다 ㅋㅎㅋㅎ굿굿
int score = 85;
if(score >= 90)
{
printf("A");
}
else if(score >= 80)
{
printf("B");
}
else
{
printf("C");
}
- 한 줄은 중괄호 안 써도 됨
if(score >= 90)
printf("A");
8. 반복문
while문
int i = 1, sum = 0;
while(i <= 1000)
{
sum = sum + i;
i++;
}
for문
for(;;)
,while(1)
는 무한루프!break
사용 가능
#include <stdio.h>
#define N 10
int main(void)
{
int i, j;
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
printf("🥰");
// 🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
// 🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
// 🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
// 🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
// 🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
// 🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
// 🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
// 🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
// 🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
// 🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
}
printf("\n");
}
return 0;
}
9. 입력 받기
scanf("자료형", &변수명);
scanf
로 입력을 받을 수 있다.
입력 받을 때에도%d
,%c
등 데이터 타입을 지정해준다!&
는 메모리 주소를 의미한다.
char o;
int x, y;
while(1)
{
printf("수식을 입력하세요.");
scanf("%d %c %d", &x, &o, &y); // 사용자가 입력한 값이 순서대로 들어간다.
if(o == '+')
{
printf("%d %c %d = %d\n", x, o, y, x+y); // 3 + 5 = 8
}
}
입력 받을 때 주의할 점 :: C언어의 버퍼 처리
- scanf() 함수를 쓸 때 형식 지정자를
%c
로 하면, 엔터도 하나의 공백 문자로서 인식한다. - 하나의 값만 입력받는다는 의미로
getchar();
를 추가해서 엔터를 처리해줘야 한다.
10. 사용자 정의 함수
반환형태 함수명(매개변수)
{
실행
}
- 반환값이 없으면 반환형태에
void
를 적으면 된다. - main 함수 밖에 변수를 선언하면 전역 변수로 사용할 수 있다.
// 전역 변수: main 함수 밖에 선언
int hour;
int minute;
int minuteAdd;
void counter()
{
minute += minuteAdd;
hour += minute / 60;
minute %= 60;
hour %= 24;
}
728x90
반응형
'C언어' 카테고리의 다른 글
[c언어] Red-Black Tree 구현하기 (0) | 2023.04.06 |
---|---|
MacOS에서 Ubuntu 개발 환경 설치하기 (AWS, VSC) (0) | 2023.03.31 |
[C언어] MacOS - VSC에 C언어 개발 환경 구축하기 (0) | 2023.03.17 |