C언어

정혜지·2023년 4월 11일

Hello World!

#include <stdio.h>
  int main(void)
  {
    printf("Hello World!");
    return 0;
  }

#include <stdio.h>
standard input output. header

printf, scanf와 같은 단순한 입출력 함수를 제공해주는 기본 라이브러리

int main(void)
반환타입 main(매개변수)

main()
어떠한 프로젝트를 실행했을 때, 무조건 가장 처음 실행되는 부분
컴파일, 목적프로그램으로 변환을 시킬 때 main함수부터 시작이 되도록 약속되어 있다

return 반환값;
하나의 함수가 종료될 때, 반환값을 정해주는 지정된 약속



변수

프로그래밍이 실행되는 동안에 언제든지 저장된 값이 변경될 수 있는 공간을 의미

int main(void)
{
  int x;
  x = 5;
  printf("%d", x);		// 5
  printf("변수 x의 메모리 크기는 %d입니다", sizeof(x));		//변수 x의 메모리 크기는 4입니다
  return 0;
}

;(세미콜론)
하나의 명령이 끝났음을 알려주는 약속 같은 것

sizeof()
하나의 약속된 C언어 제공 기본적인 함수 중 하나로, 변수의 메모리 크기가 얼마나 되는지 알려주는 함수
자료형이 int(정수형)인 경우는 어떠한 변수이든 메모리의 크기가 무조건 4byte이다.


자료형의 크기

예약어자료형크기(byte)
short정수형2
int정수형4
long정수형4
char문자형1
float실수형4
double실수형8

int main ()
{
  int x = 50;
  float y = 123456789.123456789;
  printf("x = %d\n", x);	// x = 50
  printf("y = %.2f\n", y);  // y = 123456789.00
  return 0;
}

%.2f-> 소수점 2자리까지만 출력하는 서식 지정자

float y = 123456789.123456789;
printf("y = %.2f\n", y)

Q. 실수형 float의 결과가 123456789.12가 아닌 123456789.00인 이유

A. float는 실수를 표현하는 자료형이긴 하지만 표현할 수 있는 범위가 4byte로 좁다 -> float이 커버할 수 없는(4byte)가 넘는 부분은 잘려나감


Q. 123456789.123456789을 표현할 수 있는 자료형 ?

A. double, 8byte의 저장공간을 가진다.

int main ()
{
  double z = 123456789.123456789;
  printf("z = %.2f\n", z);  // z = 123456789.12
  return 0;
}

Overflow

특정한 변수가 가지고 있을 수 있는 범위를 넘겼을 때(= 넘칠때)

#include <stdio.h>
#include <limits.h>  -> 해당 라이브러리가 있어야만 INT_MAX 사용가능

int main()
{
   int x = INT_MAX;
   printf("int형의 최댓값 x는 %d입니다.\n", x); 
   return 0;
}
// int형의 최댓값 x는 2147483647입니다.

#include <limits.h>
각각의 변수들 자료형에 따른 한계점(한계값) 범위들을 포함하고 있는 라이브러리

INT_MAX
기본적으로 제공하는 int형이 가질 수 있는 가장 큰 값을 의미

printf("x + 1은 %d입니다.\n", x+1);
// x + 1은 -2147483648입니다.	-> int형이 가질 수 있는 최소값

오버플로우
말 그대로 한계를 넘어서 값이 초과되는 것

최대값에서 1을 더하니 오히려 최소값으로 돌아와 버린다.
=> overflow


간단한 사칙연산

#include <stdio.h>
int main()
{
   int x = 10;
   int y = 20;
   printf("x = %d입니다.\n", x);		// x = 10입니다.
   printf("y = %d입니다.\n", y);		// y = 20입니다.
   printf("x + y = %d입니다.\n", x + y);		// x + y = 30입니다.
   printf("x - y = %d입니다.\n", x - y);		// x - y = -10입니다.
   printf("x * y = %d입니다.\n", x * y);		// x * y = 200입니다.
   printf("x / y = %d입니다.\n", x / y);		// x / y = 0입니다.
   return 0;
}

Q. x(10) / y(20)의 결과가 0인 이유?

A. C언어에서 두개의 정수 나누기를 하고 그 결과를 int형(%d)으로 출력하게 되면 몫을 출력하는 것과 같다.

⭕ 정수 / 정수 = 정수
소수점을 삭제하고 출력되기 때문에 => 몫을 구하는 것과 동일하다.

profile
오히려 좋아

0개의 댓글