반응형

*C언어 변수타입

// 문제 : 변수를 만들고 3.14를 넣은 후 출력해보세요.(가장 메모리를 효율적으로 사용해주세요.)
#include "stdio.h"
   
int main(void) {
  int i = 3.14;
  
  printf("1st 시도 => i : %d\n", i); // 실패 => i 에는 오직 정수만 들어간다.
  
  float f = 3.14;
  
  printf("2nd 시도 => f : %d\n", f); // 실패 => `%d`는 데이터를 `int 로 해석하겠다.`라는 뜻 입니다.

  printf("3nd 시도 => f : %f\n", f);
  
  return 0;
}



// 문제 : 변수를 만들고 200을 넣은 후 출력해보세요.(가장 메모리를 효율적으로 사용해주세요.)
#include "stdio.h"

int main(void) {
  unsigned char i = 200;
  
  printf("i : %d\n", i);
  return 0;
}



// 문제 : 변수를 만들고 21억을 넣은 후 출력해보세요.(가장 메모리를 효율적으로 사용해주세요.)
#include "stdio.h"

int main(void) {
  int s = 2100000000;

  printf("s : %d\n", s);
  return 0;
}



// 문제 : 변수를 만들고 22억을 넣은 후 출력해보세요.(가장 메모리를 효율적으로 사용해주세요.)
#include "stdio.h"

int main(void) {
  int s = 2200000000;

  printf("1st 시도 => s : %d\n", s); // 실패, %d는 int로 취급된다. int는약 -21억부터 +21억까지 표현가능 하다.

  unsigned int k = 2200000000;

  printf("2st 시도 => k : %u\n", k);

  int q = 2200000000;

  printf("3st 시도 => q : %ld\n", q);
  
  return 0;
}



// 문제 : 변수를 만들고 400억을 넣은 후 출력해보세요.(가장 메모리를 효율적으로 사용해주세요.)
#include "stdio.h"

int main(void) {
  long s = 40000000000;
  
  printf("s : %ld", s);
  
  return 0;
}

 

*C언어 변수 크기 확인 ( sizeof(변수명) )

* 변수 크기 확인 (sizeof)
// 문제 : char와 unsigned char의 공간크기를 각각 출력해주세요.
// 힌트 : sizeof(변수) or sizeof(타입)
// 힌트 : sizeof 함수는 해당 매개변수의 공간크기를 반환합니다.
#include <stdio.h>

int main(void) {
  printf("char의 크기 : %lu\n", sizeof(char));
  printf("unsigned char의 크기 : %lu\n", sizeof(unsigned char));

  char c;
  unsigned char uc;

  printf("c의 크기 : %lu\n", sizeof(c));
  printf("uc의 크기 : %lu\n", sizeof(uc));

  return 0;
}

 

*모든 변수 타입의 크기 (바이트)

- 1 byte = 8 bit

// 문제 : C언어에 있는 모든 기본타입변수의 크기를 출력해주세요.

#include <stdio.h>

int main(void) {
    // 정수 계열
  char c; // 1바이트(돌 8개)
  short s; // 2바이트(돌 16개)
  int i; // 4바이트(돌 32개)
  long l; // 8바이트(돌 64개)
  
  // 실수 계열
  float f; // 4바이트(돌 32개)
  double d; // 8바이트(돌 64개)

  printf("char c변수의 크기 : %lu 바이트\n", sizeof(c));
  printf("short s변수의 크기 : %lu 바이트\n", sizeof(s));
  printf("int i 변수의 크기 : %lu 바이트\n", sizeof(i));
  printf("long l 변수의 크기 : %lu 바이트\n", sizeof(l));
  printf("float f 변수의 크기 : %lu 바이트\n", sizeof(f));
  printf("double d 변수의 크기 : %lu 바이트\n", sizeof(d));
  
  return 0;
}

 

*C언어 포인터

// 문제 : 변수 i의 값을 해킹해주세요.
// 조건 : i의 값을 직접 바꾸는 것은 안됩니다.
// 조건 : `i = 50;` 은 안됩니다.
#include <stdio.h>

int main(void) {
  int i = 30;

  // p는 i의 실제주소값을 가리킨다.
  int* p = &i;

  // p안에 들어있는 값을 메모리 상의 좌표값으로 인식하고 그 주소대로 찾아간다.(그러면 변수 i가 나온다.)
  *p = 50; // `i = 50;` 과 완벽히 같은 의미이다.

  printf("i : %d\n", i);
  // 출력 => i : 50

  return 0;
}



// 문제 : 변수 c의 값을 해킹해주세요.
// 조건 : c의 값을 직접 바꾸는 것은 안됩니다.
// 조건 : `c = 220;` 은 안됩니다.
#include <stdio.h>

int main(void) {
  unsigned char c = 200;

  unsigned char* p = &c;
  *p = 220;

  printf("c : %d\n", c);
  // 출력 => c : 220

  return 0;
}
반응형

'프로그래밍 > C언어' 카테고리의 다른 글

C언어 포인터(심화)  (0) 2020.05.26
C언어 포인터  (0) 2020.05.25
컴퓨터 구성, 메모리, C언어 포인터  (0) 2020.05.23
C언어 함수(심화), 별찍기  (0) 2020.05.22
C언어 함수  (0) 2020.05.20

+ Recent posts