+) 정수 자료형의 크기


+) 키보드, 터미널(모니터) -> 일반적인 콘솔을 지칭
🔽




// ch = getchar(), scanf("%c", &ch); 같은 기능 수행 , 차이점: scanf는 자료형의 유형을 확인<정리>
%c -> 자료형 지정자 중, 문자를 받으므로 버퍼에 남은 엔터, 탭, 스페이스를 읽음
%*c-> 한 문자(ex. [enter]) 버림
(버리지 않으면 그 다음 행에 영향을 줄 수 있음, 버퍼를 비워야 값을 입력받을 수 있음)
" [blank] %c" 공백 지정자 -> space, tab, enter을 버린다.
//scanf2.c
#include <stdio.h>
int main()
{
// 자료형 변수 선언
char ch;
short int n1; //%hd
int n2; //%d cf. %ld(long int)
long long int n3; // 8byte //%lld (long long int)
float fnum; // 4byte
double dnum; // 8byte
printf("input n1 ?"); //100 [enter] // 값을 받아오는 자료형 지정자는 입력 버퍼를 먼저 검사 후 enter 나 tab의 공백을 제거 (empty)
scanf("%hd%*c", &n1); // %*c는 한 문자(ex. [enter]) 공백 버림 (버리지 않으면 그 다음 행에 영향을 줄 수 있음, 버퍼를 비워야 값을 입력받을 수 있음)
printf("input c1 ?"); //키보드(외부장치)로부터 'A'를 입력
scanf(" %c", &ch); // " %c" 공백 지정자 -> space, tab, enter을 버린다 (문자 자료형 지정자는 space, tab, enter을 기본적으로 읽어옴)
printf("input n2 ?"); //200
scanf("%d ", &n2); //"%d " 공백 지정자를 자료형 지정자 뒤에 입력할 경우 enter로 값을 받아올 수 없음 (위치 중요-> 공백 지정자 사용시 자료형 지정자 앞에 공백 부여 필)
printf("input n3 ?"); //300
scanf("%lld", &n3);
printf("input fnum ?"); //1.1
scanf("%f", &fnum);
printf("input dnum ?"); //5.2
scanf("%lf", &dnum);
printf("\n%c, %hd, %d, %lld, %f, %lf", ch, n1, n2, n3, fnum, dnum);
return 0;
}
#include <stdio.h>
void func_1();
void func_2();
void func_3();
int main(void)
{
/*func_1();*/
/*func_2();*/
func_3();
return 0 ;
}
void func_1()
{
int first, second;
printf("두 수를 입력하세요 ? "); // 100 200 [enter]
scanf_s("%d%d", &first, &second);
printf("first : %d, second : %d \n", first, second);
}
void func_2()
{
int first, second;
char op=0;
printf("전화번호를 입력하세요 ? "); // 3429-5114 [enter] 3429 5114 일 경우 공백 문자
scanf_s("%d%*c%d", &first, &second); // %*c
//scanf_s("%d%c%d", &first, &op, &second);
printf("first : %d, second : %d \n", first, second);
printf("op: %d, %c \n", op, op);
}
void func_3()
{
int first, second;
printf("5자리이상 숫자를 입력하세요 ? "); //123456789 [enter]
scanf_s("%3d%d", &first, &second);
printf("first : %d, second : %d \n", first, second);
}
//getchar1.c
# include <stdio.h>
int main()
{
char c1, c2; // 1바이트
printf("input c1 ? "); // 콘솔창 Xabc 입력시 첫 글자 X만 반환
c1 = getchar();
printf("c1 : %c \n", c1);
//getchar();
while (getchar() != '\n'); //enter일때 까지 한문자씩 읽는다
printf("input c2 ? ");
c2 = getchar();
printf("c2: %c \n", c2);
return 0;
}
// ch = getchar(), scanf("%c", &ch); 같은 기능 수행 , 차이점: scanf는 자료형의 유형을 확인
// putchar('a');, printf("%c", 'a');
// 많은 양의 문자열 입출력은 getchar(), putchar()함수가 성능 더 좋음. (오버헤드 적음?)
//operator1.c
#include <stdio.h>
int main()
{
int x = 10, y = 3, r = 5;
const float pi = 3.14159F;
//산술연산
printf("-x : %d \n\n", -x);
//식 우선순위 변경
printf("3+4/3*4=%d \n", 3 + 4 / 3 * 4);
printf("(3+4) / 3*4 = %d \n\n", (3 + 4) / 3 * 4);
//수학에 나오는 수식
printf("(x+y+x)/3 =%d \n", (x + y + x) / 3);
printf("3*x*x+4*x+5=%d\n", 3 * x * x + 4 * x + 5);
printf("2 * pi*r = %f\n", 2 * pi * r);
printf("pi*r*r=%f\n", pi * r * r);
return 0;
}
// operator2.c
// 증감 연산자
#include <stdio.h>
int main()
{
int x=100, y=200;
printf("x: %d \n", x);
++x; // 수식 단독으로 사용시 x++과 동일 기능
printf("x: %d \n", x);
x--;
printf("x: %d \n", x);
printf("x:%d, y:%d \n", ++x, y++); // 전위형과 후위형의 차이 기억
printf("x:%d, y:%d \n", x, y);
printf("x:%d, y:%d \n", --x, y--); // 전위형과 후위형의 차이 기억
printf("x:%d, y:%d \n", x, y);
return 0;
}
// operator3.c
// 관계연산자와 논리연산자
#include <stdio.h>
int main()
{
int x = 80, y = 200;
// 관계연산자: 두 값을 비교하여 참(1)이나 거짓(0)을 반환.
printf("%d \n", x < y);
printf("%d \n", x >= y);
printf("%d \n", x == y);
printf("%d \n", x != y);
//논리연산자: 두 논리값을 비교하여 새로운 참(1)이나 거짓(0)을 반환
// &&(and), ||(or), !(not)
// 비교할 대상이 여러개일 때 주로 사용
printf("%d \n", x <= 100 && y <= 100); //관계가 논리연산보다 우선 순위
printf("%d \n", x <= 100 || y <= 100); //하나만 참이면 참임.
x = 0;
printf("!x:%d, !y:%d \n", !x, !y);
return 0;
}
//operator4.c
#include <stdio.h>
int main()
{
int x;
/*printf("성별 ? (0:남, 1:여)");
scanf("%d", &x);*/
//제어문 -> 구문안에 포함되지 않음. cf) 3항 연산자의 경우 구문 안에 포함 가능
//printf("%s \n", x == 0 ? "남성" : "여성"); // 3항 연산자 형식: [형식: 조건식? 식1:식2] ->다른 구문 내 입력 가능
/*printf("%s \n", x == 0 ? "남성" : x == 1 ? "여성" : "입력 오류!!!!"); */
int n1 = 100, n2 = 200, sum = 0;
sum += n1; //sum = sum + n1
sum += n2; //sum = sum + n2
printf("sum: %d \n", sum); // ++x 표기 = x=x+1 표기
return 0;
}
#include <stdio.h>
int main(void)
{
printf("%d %c",555, 9); // 탭키 기능을 아스키 문자 표현을 통해 사용
printf("%d %c%c", 555, 10, 13); // 탭키 기능을 아스키 문자 표현을 통해 사용 , LF + CR = \n
printf("/%d/ \n",555);
printf("/%10d/ \n",555); // 오른쪽 정렬
printf("/%-10d/ \n",555); // 왼쪽 정렬
printf("/%010d/ \n",555);
printf("/%.10d/ \n\n", 555);
printf("/%f/ \n",8192.1978);
printf("/%13f/ \n",8192.1978);
printf("/%13.2f/ \n",8192.1978); // f는 기본적으로 소숫점 이하 6자리까지 출력, '.0f' 는 출력x
printf("/%-13.2f/ \n\n",8192.1978);
printf("%c %d %c %d \n",'A','A',97,97);
printf("%s \n", "C Language...");
printf("%5s\n", "C Language..."); // 5는 문자열 길이를 의미
printf("%.5s \n\n", "C Language...");
printf("%d %o %x \n",67,67,67); // 67 -> 10진수 데이터를 의미 , '%o'-> 8진수 변환 , '%x' -> 16진수 변환
printf("%d %#o %#x \n",067,067,067); // 067-> 8진수 데이터를 의미
printf("%d %#o %#x \n",0x67,0x67,0x67); //0x67-> 16진수 데이터를 의미
return 0 ;
}
//4_8.c
# include <stdio.h>
# include <ctype.h>
int main()
{
char celsius;
int tmp, out;
printf("화씨이면 F, 섭씨이면 C 입력");
scanf("%c", &celsius);
celsius = toupper(celsius);
printf("%s 온도 ?", celsius == 'F' ? "화씨" : "섭씨");
scanf("%d", &tmp);
// 화씨, 섭씨 구분하여 온도 계산
out = (celsius == 'F' ? (tmp - 32) / 1.8 : (tmp * 1.8) + 32);
// 섭씨, 화씨 구분하여 출력
printf("\n%s를 %s로 변환 : %d \n",
celsius == 'F' ? "화씨" : "섭씨",
celsius == 'F' ? "섭씨" : "화씨", out);
return 0;
}