본문 바로가기

Study_C, C++/홍정모의 따라하며 배우는 C언어

[홍정모의 따라하며 배우는 C언어] 3.13 불리언형 ~ 4.2 sizeof 연산자

728x90

3.13 불리언형

  • 불리언형 : 논리 연산시 사용. 논리 자료형 이라고도 부름
  • 불리언형은 참(1), 거짓(0)의 두가지 값만 가질 수 있음 -> 내부적으론 정수형
  • 참, 거짓을 표현하는 bit 1자리만을 사용하나 자료형이 가질 수 있는 최소 크기가 1byte 이므로 불리언형은 1byte 크기를 가짐
#include <stdio.h>
#include <stdbool.h>	// true와 false를 직접 문자로 넣어 사용 가능

int main()
{
	printf("%u\n", sizeof(_Bool));		// 1byte

	_Bool b1;	// 불리언형 자료형 선언
	b1 = 0;		// false
	b1 = 1;		// true

	printf("%d\n", b1);	// 형식 지정자가 따로 없음 -> 정수 형식지정자 사용

	bool b2, b3;	// stdbool.h을 사용하여 bool type 선언 가능
	b2 = true;	// 예약어
	b3 = false;	// 예약어

	printf("%d %d\n", b2, b3);

	return 0;
}​

 

Output : 
1
1
1 0

 

 

  • 컴퓨터가 참, 거짓을 판별할 때는 참과 거짓 각각을 따로 판별하지 않고 거짓이 아니면 참이라고 판별함

 

3.14 복소수형

#include <stdio.h>
#include <complex.h>	// 복소수형 사용을 위한 library

int main()
{
	_Dcomplex z;		// double type. double, float, long double 3가지 type이 존재
	z._Val[0] = 1.0;	
	z._Val[1] = 1.0;

	return 0;
}

 

4.1 문자열 입출력하기

 

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	// char fruit_name;		// 문자 하나만 저장 가능
	char fruit_name[40];		// char type (1byte) 저장 공간을 40개 만듦


	printf("What is your favorate fruit?\n");

	// scanf("%c", &fruit_name);	// 입력받는 공간이 글자 한 칸 밖에 받을 수 없음
	scanf("%s", fruit_name);	// 문자열을 입력받을 시 & 사용 X. 문자열(배열)의 변수명 자체가 
    					// 문자열의 주소를 나타내기 때문 

	printf("You like %s!\n", fruit_name);

	return 0;
}

 

Output : 
What is your favorate fruit?
Banana 입력
You like Banana!

 

  • C, C++ 표준에서는 format specifier보다 conversion specifier라는 표현을 더 많이 사용
  • 배열(Array) : 같은 자료형의 자리를 여러개 만듦

Ctrl + f : 코드내 동일한 단어를 모두 찾아줌

 

4.2 sizeof 연산자

  • sizeof 연산자 : 변수나 자료형이 차지하는 메모리의 크기를 알려줌
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	int a = 0;
	unsigned int int_size1 = sizeof a;	// == sizeof(int)
	unsigned int int_size3 = sizeof(a);	// 위와 동일한 표현
	unsigned int int_size2 = sizeof(int);	// 자료형 직접 입력. 이때는 괄호 필수

	size_t int_size4 = sizeof(a);	// 다른 시스템에서 sizeof의 표현범위가 unsigned int가 아닐 
					// 경우가 있을 수도 있어서 size_t형을 사용하여 이식성을 높임
	size_t float_size = sizeof(float);

	printf("Size of int type is %u bytes.\n", int_size1);
	printf("Size of int type is %zu bytes.\n", int_size4);		// zu = size_t의 형식지정자
	printf("Size of float type is %zu bytes.\n", float_size);

	return 0;
}
  • size_t는 가장 큰 사이즈를 담을 수 있는 unsigned 자료형 ex) 32bit 컴퓨터에선 32bit, 64bit 컴퓨터에선 64bit
Output : 
Size of int type is 4 bytes.
Size of int type is 4 bytes.
Size of float type is 4 bytes.

 

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	int int_arr[30];	// 4byte씩 30개 -> 컴파일시 크기 결정
	int* int_ptr = NULL;	// 주소를 적을 수 있는 메모지를 들고 있는 상태
	int_ptr = (int*)malloc(sizeof(int) * 30);	// 메모리 공간들을 대표하는 메모리주소 하나를 
    							//받아서 적음

	printf("Size of array = %zu bytes\n", sizeof(int_arr));	
	printf("Size of pointer = %zu bytes\n", sizeof(int_ptr));	// 메모지의 크기를 알려줌

	return 0;
}

 

Output : 
Size of array = 120 bytes
Size of pointer = 4 bytes

 

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	char c = 'a';		// 내부적으로 정수로 바뀌어져 저장
	char string[10];	// C언어에서는 문자열의 마지막에 null character ('\0')을 저장해야 함 
    				// null character는 마침표 역할. string은 총 9개의 문자만 받을 수 있음
	
	size_t char_size = sizeof(char);
	size_t str_size = sizeof(string);
	
	printf("Size of char type is %zu bytes.\n", char_size);
	printf("Size of string type is %zu bytes.\n", str_size);

	return 0;
}

 

Output : 
Size of char type is 1 bytes.
Size of string type is 10 bytes.

 

 

 


강의 출처 : https://www.inflearn.com/course/following-c/dashboard

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com