🙇‍♀️4


🪐scanf()

int i = 0;

scanf("%i", &i); // & : ampersand

printf("Value is : %i\n", i);

return 0;


🪐입출력 프로그램

int main()
{
	float won = 0.0f;
	float dollar = 0.0f;

	printf("Input won\n");
	scanf("%f", &won);

	dollar = won * 0.00089f;

	printf("Dollar = %f\n", dollar);

	return 0;
}


🪐정수와 실수

  • 정수 Integers
    • 음의 정수, 0, 양의 정수
    • 2, -15, 3697
    • 내부적으로 2진수
  • 실수 Real numbers
    • 2.0, 3.16, 2.74, 0.123
    • 내부적으로 ‘부동 소수점 floating point’ 표현법 사용
    • 뜰 부, 움직일 동 소수점이 떠다닌다!
    • 3.14 = 3.14E0 = 3.14e0 = 0.314E1 = 31.4E-1
    • 내부적으로 2진수
  • 지수 Exponent

    • 한 비트를 +-부호 표현에 사용
    • 0 : 양수, 1 : 음수
    • ‘2의 보수’표현법이 일반적
    • 부호 있는 정수와 범위가 다름
  • 부동 소수점 수

    • 32bit Single Precision
    • float a = 1.234f;
    • sign(1bit) exponent(8bit) fraction(23bit)

    • 64bit Double Precision
    • double pi = 3.141592
    • sign(1bit) exponent(11bit) fraction(52bit)


🪐정수 오버플로우

unsigned int i = 0;

sizeof(unsigned int);
sizeof(i);
printf("%u\n", sizeof(unsigned int));
printf("%u\n", sizeof(i));
// 옛날에는 다 printf를 사용했다고 함

unsigned int j = 0b11111111111111111111111111111111; // 32
// 0b는 표준은 아니지만 대부분 지원한다

printf("%u\n", j);
// unsinged 들은 %u를 사용한다

unsigned int u_max = UINT_MAX;
unsigned int u_min = 0;
signed int i_max = INT_MAX;
signed int i_min = INT_MIN;

printf("max of uint by d %d\n", u_max);
// unsigned를 %d로 출력하게 되면 u_max기준 0이 됨
printf("max of uint %u\n", u_max);
printf("min of uint %u\n", u_min);
printf("max of int %d\n", i_max);
printf("min of int %d\n", i_min);
unsigned int u_max = UINT_MAX + 1;

printf("%u\n", u_max);

// i to binary representation
char buffer[33];
_itoa(u_max, buffer, 2);
// 값을 이진수로 표현해줌

// print decimal and binary
printf("decimal: %u\n", u_max);
printf("binary: %s\n", buffer);

// max + 1 : 오버플로우가 발생해서 0이 됨
// 0 - 1 : 오버플로우가 발생해서 max값이 됨


🪐다양한 정수형들

// signed char (1)				: char (hhd, c)					
// unsinged char (1)			: unsinged char (hhu, c)
// signed short int	(2)			: short (hd)
// unsigned short int (2)		: unsinged short (hu)
// signed int (2 or 4)			: singed or int (d, i)
// unsinged int	(2 or 4)		: unsinged (u)
// long int	(4)					: long (ld)
// unsigned long int (4)		: unsinged long (lu)
// long long int (8)			: long long (lld)
// unsigned long long int (8)	: unsigned long long (llu)
// ()안의 값은 최소크기 이다.
// ()안의 내용은 형식 지정자 이다.
char c = 65;
short s = 200;
unsigned int ui = 3000000000U; // 3'000'000'000U
long l = 65537L;
long long ll = 12345678908642LL; // 12'345'678'908'642ll

printf("char = %hhd, %d, %c\n", c, c, c);
printf("short = %hhd, %hd, %d\n", s, s, s);
printf("unsigned int = %u, %d\n", ui, ui);
printf("long = %ld, %hd\n", l, l);
printf("long long = %lld, %ld\n", ll, ll);

Screenshot 2022-04-21 161535


🪐8진수와 16진수

unsigned int decimal = 4294967295;
unsigned int binary = 0b11111111111111111111111111111111;
unsigned int oct = 037777777777;
unsigned int hex = 0xffffffff;

printf("%u\n", decimal);
printf("%u\n", binary);
printf("%u\n", oct);
printf("%u\n", hex);

printf("%o %x %#o %#x %#X\n", decimal, decimal, decimal, decimal, decimal);

octal hexadecimal


🪐고정 너비 정수

#include <stdio.h>
//#include <stdint.h> // also included in inttypes.h
#include <inttypes.h>

int main()
{
	int i;				
	int32_t i32;		// 32 bit integer
	int_least8_t i8;	// smallest 8 bit	
	int_fast8_t f8;		// fastest minimum
	intmax_t imax;		// biggest signed integers
	uintmax_t uimax;	// biggest unsigned integers

	i32 = 1004;

	printf("me32 = %d\n", i32);
	printf("me32 = %" "d" "\n", i32);
	printf("me32 = %" PRId32 "\n", i32);

	return 0;
}


🪐문자형

char c = 'A';
char d = 65; // d = 'A'

printf("%c %hhd\n", c, c); // A 65
printf("%c %hhd\n", d, d); // A 65

printf("%c \n", c + 1); // B

char a = '\a';
printf("%c", a); // 띠링 효과음
printf("\07"); // 띠링 효과음 8진수
printf("\x7"); // 띠링 효과음 16진수

printf("AB\tCDEF\n"); // AB		CDEF
printf("ABC\tDEF\n"); // ABC	DEF

printf("\\ \'HA+\' \"Hello\" \?\n"); // \ 'HA+' "Hello" ?

연봉 입력하기

float salary;
printf("$______\b\b\b\b\b\b");
scanf("%f", &salary);

Input Salary

태그:

카테고리:

업데이트: