๋”ฐ๋ฐฐ์”จ

๋”ฐ๋ฐฐ์”จ 4.5 ~

์•„์˜ณ์ด 2021. 1. 8. 21:24

4.5 ๊ธฐํ˜ธ์  ์ƒ์ˆ˜์™€ ์ „์ฒ˜๋ฆฌ๊ธฐ

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define PI 3.141592f		//	= X
#define AI_NAME "Jarvis"	//	๋Œ€๋ฌธ์ž๊ฐ€ ์ผ๋ฐ˜์ 

int main()
{
	//const Float pi = 3.141592f;
	
	float radius, area, circum;

	printf("I'm %s.\n", AI_NAME);
	printf("Please, input radius\n");
    
	scanf("%f", &radius);

	area = PI * radius * radius;	//	area = pi*r*r 
	circum = 2.0 * PI * radius;		//	circum = 2.0 * pi * r

	printf("Area is %f\n", area);
	printf("Circumference is %f\n",  circum);

	//TODO: wriong usage, string, const

	return 0;
    
}

#define ์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๊ณ 

const ๋ฅผ ์ด์šฉํ•ด ๊ธฐํ˜ธ์  ์ƒ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

 

4.6 ๋ช…๋ฐฑํ•œ ์ƒ์ˆ˜๋“ค manifest constants

#include <stdio.h>
#include <limits.h>		//	INT_MAX, ..., etc
#include <float.h>		//	FLT_MAX, ..., etc

#define PI 3.141592		//	manifest constants, symbolic constants

int main()
{
	printf("PI is %f\n", PI);
	printf("Biggest int: %d\n", INT_MAX);
	printf("One byte in this system is %d bits\n", CHAR_BIT);
	printf("Smallest normal float %e\n", FLT_MIN);

	return 0;

}

์—ฌ๊ธฐ์„œ PI, INT_MAX, CHAR_BIT, FLT_MIN์€ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ€์ ธ๋‹ค ์“ฐ๋Š” ๋А๋‚Œ์ด๋‹ค.

 

 

4.7 printf() ํ•จ์ˆ˜์˜ ๋ณ€ํ™˜ ์ง€์ •์ž๋“ค

 

printf(์ œ์–ด-๋ฌธ์ž์—ด, ์•„์ดํ…œ1, ์•„์ดํ…œ2, ...)

 

int a = 2;

printf("%d + %d = %d", 1, a, 1 + a);

 

ํ˜•์‹ ์ง€์ •์ž

%[flags][width][.precision][lentf]specifier

printf("%+10.5hi", 256);

 

 

#include <stdio.h>
#include <limits.h>
#include <float.h>

int main()
{
	double d = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749;

	printf("%c\n", 'A');
	printf("%s", "I love you\n");
	printf("Even if there's a small chance, \
we owe this to everyone who's in this room to try.\n");

	printf("\n");
	printf("%d %i %i %i\n", 1004, 1234, INT_MAX, UINT_MAX);	//	overflow
	printf("%u %u %u\n", 1023, -1, UINT_MAX);				//	overflow

	printf("\n");
	printf("%f %f %lf\n", 3.141592f, d, d);	//	l in %lf is ignored
	printf("%a %A\n", d, d);
	printf("%e %E\n", d, d);

	printf("\n");
	printf("%g %g\n", 123456.789,1234567.89);
	printf("%G %G\n", 123456.789,1234567.89);
	printf("%g %g\n", 0.00012345, 0.000012345);
	printf("%G %G\n", 0.00012345, 0.000012345);

	printf("\n");
	printf("%o\n", 9);
	printf("%p\n", &d);	//	pointer-of operator

	printf("\n");
	printf("%9d\n", 12345);					//	์•ž์— ์ˆซ์ž๋ฅผ ์“ฐ๋ฉด ์ž๋ฆฟ์ˆ˜๋ฅผ ๋งž์ถฐ์ค€๋‹ค.
	printf("%09d\n", 12345);
	printf("%.2fn", 3.141592);
	printf("%.20f %.20lf\n", d, d);

	printf("\n");
	int n_printed = printf("Counting!");
	printf("%u\n", n_printed);


	return 0;

}

๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉฐ ๋น„๊ตํ•ด๋ณด์ž

 

 

 

4.8 ๋ณ€ํ™˜ ์ง€์ •์ž์˜ ์ˆ˜์‹์–ด๋“ค modifiers

 

ํ˜•์‹ ์ง€์ •์ž

%[flags][width][.precision][lentf]specifier

printf("%+10.5hi", 256);

 

#include <stdio.h>
#include <limits.h>

int main()
{
	printf("%10i\n", 1234567);
	printf("%-10i\n", 1234567);
	printf("%+i %+i\n", 123, -123);
	printf("% i \n% i\n", 123, -123);
	printf("%X\n", 17);
	printf("%#X\n", 17);
	printf("%05i\n", 123);
	printf("%*i\n", 7, 456);

	printf("\nPrecision\n");
	printf("%.3d\n", 1024);
	printf("%.5d\n", 1024);
	printf("%.3f\n", 123456.1234567);
	printf("%.3f\n", 123456.1235);		//	๋ฐ˜์˜ฌ๋ฆผ
	printf("%10.3f\n", 123.45678);
	printf("%010.3f\n", 123.45678);
	printf("%.5s\n", "ABCDEFGHIJKLMN");
	printf("%.s\n", "ABCDEFGHIJKLMN");	//	.0

	printf("\nLength\n");
	printf("%hhd %hd %d\n", 25, 257, 257);		//overflow
	printf("%d %lld %lld\n", INT_MAX + 1, INT_MAX +1, 2147483648LL);	//	x64์™€ x86์— ๋”ฐ๋ผ ๋‹ค๋ฆ„

	return 0;

}

๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉฐ ๋น„๊ตํ•ด๋ณด์ž

 

 

 

4.9 printf() ํ•จ์ˆ˜๊ฐ€ ์ธ์ž๋“ค์„ ํ•ด์„ํ•˜๋Š” ๊ณผ์ •

 

#include <stdio.h>	
    
int main()
{
	float n1 = 3.14;		// 4 byte
	double n2 =1.234;		// 8 byte
	int n3 = 1024l;			// 4 byte

	printf("%f %f %d", n1, n1, n1);

	//Notethe warnings in output window
	printf("%d %d %d\n\n", n1, n2, n3);		//	4, 4, 4
	printf("%lld %lld %d\n\n", n1, n2, n3);	//	8, 8, 4	
	printf("%f %d %d\n\n", n1, n2, n3);		//	8, 4, 4
	printf("%f %lld %d\n\n", n1, n2, n3);	//	8, 8, 4

	return 0;

}

 

์ธ์ž๋“ค์ด ์Šคํƒ์— ์ˆœ์„œ๋Œ€๋กœ (์ฐจ๋ก€๋Œ€๋กœ, ์ผ๋ ฌ๋กœ) ์ €์žฅ๋œ๋‹ค

printf()์—์„œ๋Š” ๋ถ€๋™์†Œ์ˆ˜์ ์ด ๋“ค์–ด์˜ค๋ฉด float, double ๋ชจ๋‘ double๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

 

์œ„์˜ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด

 1. printf("%d %d %d\n\n", n1, n2, n3);

๋ฐ์ดํ„ฐ์˜ ์‚ฌ์ด์ฆˆ์™€ ์ง€์ •ํ˜•์‹์ด ๋‹ฌ๋ผ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

์šฐ์„  n1, n2๋Š” ๋ถ€๋™์†Œ์ˆ˜์ ์ด๊ธฐ์— %f๋กœ ๋ฐ›์•„์•ผ ํ•˜๋Š”๋ฐ ์ •์ˆ˜ %d๋กœ ๋ฐ›์•„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค.

๊ทธ๋ฆฌ๊ณ  n1์€ float์ด์ง€๋งŒ printf()๋กœ ๋ฐ›์œผ๋ฉด์„œ double ์ฆ‰ 8byte๋กœ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์—, n2๋„ 8byte๋ผ ๋ฐ์ดํ„ฐ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋‹ค๋ฅด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด n3๋Š” ๋ฐ์ดํ„ฐ์˜ ์‚ฌ์ด์ฆˆ์™€ ์ง€์ •ํ˜•์‹์ž๋„ ๋งž๋Š”๋ฐ ์™œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋‚˜?

n1๊ณผ n2์˜ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋งž์ง€ ์•Š์•„ ๋ฐ€๋ ค ์ฝ์–ด ์—ฐ์‡„์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

 

 2. printf("%lld %lld %d\n\n", n1, n2, n3); 

์ง€์ •ํ˜•์‹์ž๊ฐ€ ๋งž์ง€ ์•Š๋‹ค.

๋ฐ์ดํ„ฐ์˜ ์‚ฌ์ด์ฆˆ๋Š” ๋ชจ๋‘ ๋งž์ง€๋งŒ ๋ถ€๋™์†Œ์ˆ˜์  %f๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ n3์€ n1, n2๊ฐ€ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์ฆˆ๋Š” ๋งž๊ธฐ ๋•Œ๋ฌธ์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถœ๋ ฅ๋œ๋‹ค.

 

 3. printf("%f %d %d\n\n", n1, n2, n3); 

n2์˜ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— n2, n3 ๋ชจ๋‘ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

 

 4. printf("%f %lld %d\n\n", n1, n2, n3);

n2์˜ ์ง€์ •ํ˜•์‹์ž๊ฐ€ ๋‹ฌ๋ผ n2๋งŒ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

 

 

 

4.10 scanf() ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ๋ฒ•

 

int i;
float f;
char str[30];
scanf("%d %d %s", &i. &f, str);
printf("%d %d %s", i, f, str);

scanf()์—์„œ double์„ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ๋Š” %lf ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.      printf()fh ์ถœ๋ ฅํ•  ๋•Œ๋Š” ๊ทธ๋Œ€๋กœ %f

123 4567 hello hi ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋นˆ์นธ๋งˆ๋‹ค ๋Š์–ด์„œ ์ž…๋ ฅ๋ฐ›๊ณ  hi๋Š” ๋ฒ„ํผ์— ์ €์žฅ๋˜์ง€๋งŒ ์ถœ๋ ฅ๋˜์ง„ ์•Š๋Š”๋‹ค.

 

 

char c
scnaf("%c", &c);
printf("%i", c);

๋ฌธ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ๋• ๋นˆ์นธ(space)๋„ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค

์•„์Šคํ‚ค์ฝ”๋“œ๊ฐ’ 32๋กœ ์ถœ๋ ฅ๋จ

 

 

unsigned i;
scanf("%i", &i);
printf("%i", i);

๋งŒ์•ฝ -123 ์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฐ›์„ ๋•Œ signed๋กœ ๋ฐ›๊ณ  unsigned๋กœ ์ €์žฅํ•ด๋†จ๋‹ค๊ฐ€ ๋‹ค์‹œ signed๋กœ ์ถœ๋ ฅํ•˜์—ฌ

-123 ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.!?

unsigned i;
scanf("%u", &i);
printf("%u", i);

๊ฐ™์€ ๊ฐ’์ธ -123 ์„ ์ž…๋ ฅํ•˜๋ฉด ์ž˜๋ชป๋œ ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

char str[30]
scanf("%5s", str);	//	width
printf("%s", str);

abcdefghi ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด

abcde(5๊ธ€์ž)  ๊นŒ์ง€๋งŒ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

 

 

int i
scanf("%i", &i);
printf("%i",i);

123a456 ์„ ์ž…๋ ฅํ•˜๋ฉด ์ˆซ์ž๋งŒ ์ž…๋ ฅ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€์ธ

123 ๋งŒ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

 

 

int a, b;
int i = scanf("%d%d", &a, &b);
printf("%d", i);

scnaf() ์˜ return value ๋Š” ๋ช‡๊ฐœ์˜ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์•˜๋Š”๊ฐ€, ๋ฐ›์€ ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

 

 

int i;
scanf("%*d%*d%d", &i)
printf("Your third input = %d", i)

scnaf()์—์„œ๋Š” *์€ ์ž…๋ ฅ์€ ๋ฐ›์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋ฌด์‹œํ•˜๊ณ  ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค.

1 2 3 ์„ ์ž…๋ ฅํ•˜๋ฉด

3์ด ์ถœ๋ ฅ๋œ๋‹ค.