프로그래밍 기본지식 3탄

최주영·2022년 12월 3일
0

C언어

목록 보기
3/15

✅C언어에서의 OverFlow 란 ?

변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려고 할 때 발생하는 것

#include <stdio.h>

int main()
{
   char num1 = 128;
   unsigend char num2 = 256;
   
   printf("%d %u\n", num1, num2);  // -128, 0 출력됨
   
   return 0;
}

위 코드와 같이 num1을 출력하면 128이 출력되어야 하지만 char에 저장할 수 있는 범위는
-128 ~ 127이라서 오버플로가 발생했습니다.

즉 저장할수 있는 범위를 넘어섰고 다시 최솟값인 -128부터 시작된다.


✅증감 연산자

증감 연산자차이점
A=A+1 와 A++A++가 좀더 타이핑 하기 편하다는 차이점만 있습니다.
++A 와 A++++A는 증가된값을 저장하는것이고 A++는 증가되기 전 값이 저장
-A 와 A--A는 음수를 표현하는 수지만 A-라는 문장은없다.
A++ 와 A ++A앞에 공백이 있으면 안되므로 A++가 맞는답이다.

✅복합 대입 연산자

(X = 9, Y = 4) 일 경우 결과 표시

복합 대입 연산식연산 결과연산식의 의미
X += YX = 13X = X + Y
X -= YX = 5X = X – Y
X *= YX = 36X = X * Y
X /= YX = 2X = X / Y
X %= YX = 1X = X % Y
X &= YX = 0X = X & Y
X |= YX = 13X = X | Y
X ^= YX = 13X = X ^ Y
X >>= YX = 0X = X >> Y
X <<= YX = 144X = X << Y

✅관계 연산자

관계 연산자연산식의 의미관계 연산자연산식의 의미
X = YX에 Y의 값을 대입한다X < YX가 Y보다 작은가?
X == YX와 Y가 같은가?X >= YX가 Y보다 크거나 같은가?
X != YX와 Y가 다른가?X <= YX가 Y보다 작거나 같은가?
X > YX가 Y보다 큰가?X <> Y잘못된 식

✅논리 연산자

#include <stdio.h>
 
int main(void)
{
  int x, y;
 
  printf("두개의 정수를 입력하시오: "); 
  scanf("%d%d", &x, &y);
 
  printf("%d && %d의 결과값: %d\n", x, y, x && y);
  printf("%d || %d의 결과값: %d\n", x, y, x || y);
  printf("!%d의 결과값: %d\n", x, !x);

  return 0;
}

정수를 x와 y를 각각 1 0을 입력했을 때 출력 결과


✅비트 연산자

  • 비트 : 0, 1 두가지 값만 가지는 측정 단위
  • 바이트 : 8개 비트로 구성된 데이터의 양을 나타내는 단위
비트 연산자연산식의 의미연산 결과
X & Y비트 AND1
X | Y비트 OR13
X ^ Y비트 XOR12
X << Y왼쪽으로 이동288
X >> Y오른쪽으로 이동0
~ X비트 NOT-10

위의 연산 결과는 (X=9, Y=5) 일 경우의 결과입니다.


✅형 변환

  • 형변환이란 실행 중에 데이터의 타입을 변경하는 것이다.
  • 형변환에는 암묵적 형변환(자동적인 형변환)명시적인 형변환으로 구분됩니다.

ex) 암묵적 형변환 : 상황에 따라서 자동적으로 이루어지는 형변환

#include <stdio.h>

int main(void)
{
  double a;
  a = 10;
  
  int b = 10;
  b = 10.123456;
  return 0;
}

위 코드의 경우 a는 10이 아닌 10.0이 저장되게 된다.
반대로 b는 10.123456이 아닌 10이 저장되게 된다.

ex) 명시적 형변환 : 변수의 타입을 강제적으로 프로그래머가 변환하는 방법

#include <stdio.h>

int main(void)
{
  int i;
  double f;
  
  f = 5 / 4;    // 1.0
  f = (double)5 / 4; // 5.0 / 4 = 1.25
  f = 5 / (double)4;  // 5 / 4.0 = 1.25
  f = (double)5 / (double)4; // 5.0 / 4.0 = 1.25
  i = 1.3 + 1.8; // 3.1 -> 소수점 제거 -> 3
  i = (int)1.3 + (int)1.8; // (1.3 -> 1) + (1.8 -> 1 ) = 2
}
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글