웹_프론트_백엔드/단과

[단과_C] 2020.02.17

shine94 2020. 2. 17. 22:25

1. 형변환
1) 자동 형변환
    정수 + 정수 = 정수
    정수 + 실수 = 실수
    예) 3 + 0.0 = 3.0
    문자 + 정수 = 정수
    예) 'A' + 5 = 70

2) 강제 형변환
    (자료형)값
    예) (double)3 == 3.0


2. 변수를 사용하는 이유
1) 반복되는 값을 쉽게 관리하기 위해서
    Why? 변수를 사용하여 출력하면 변수값 한 번만 변경해주면 되기 때문에


2) 값에 의미부여를 하기 위해서

    //어떤 의미로 출력했는지 알 수가 없음
    printf("10");
    

    //변수명을 통해 어떤 의미로 출력했는지 알 수 있음
    int age = 10;
    printf("%d\n", age)

 


3. 입력상태

 : 커서가 깜빡이고 있는 상태

 


4. 입력함수

 : 커서를 깜빡이게 하는 기능
   출력함수를 사용해서 사용자가 잘 입력할 수 있도록 해야한다.

   
   printf("사용자에게 전달할 메시지");
   scanf_s("입력받을 값의 서식문자", &변수명);

 


5. 연산자
 : 기능이 있는 특수문자

 


6. 연산자 우선순위
   최 : 최우선 연산자
   단 : 단항 연산자
   산 : 산술 연산자  
   쉬 : 쉬프트 연산자
   관 : 관계 연산자
   리 : 논리 연산자
   삼 : 삼항 연산자
   대 : 대입 연산자

 


7. 결합성
 : 같은 우선순위의 연산자들이 나열되어 있다면
   알맞는 방향으로 결합되어 연산되는 성질



8. 비트연산
 : 주로 빅데이터에서 많이 사용 

 

** Not 연산

    : printf("%d\n", ~10);의 출력값이 -11인 이유 증명 **
      1 0 1 1      11
      0 1 0 1     -11

   ---------------------
      0 0 0 0       0
      
      0 1 0 1     -11
    ~1 0 1 0      10

 


9. 아스키 코드

 : 암호화 복호화할 때 사용

 

 

10. 오늘 실습코드

1) formatTask.c

#include<stdio.h>

void main() {
	//애완동물 이름	: 뽀삐
	//뽀삐 나이	: 8살
	//뽀삐 몸무게	: 3.95kg
	//뽀삐 기분	: B

	const char* nameMsg = "애완동물 이름\t: ";
	const char* ageMsg = " 나이\t: ";
	const char* weightMsg = " 몸무게\t: ";
	const char* feelingMsg = " 기분\t: ";

	const char* name = "뽀삐";
	int age = 8;
	double weight = 3.95;
	char feeling = 'B';

	printf("%s%s\n", nameMsg, name);
	printf("%s%s%d살\n", name, ageMsg, age);
	printf("%s%s%.2fkg\n", name, weightMsg, weight);
	printf("%s%s%c\n", name, feelingMsg, feeling);

}

 

2) casting.c

#include<stdio.h>

void main() {
	//자동 형변환
	//printf("%d\n", 11 / 9);
	//printf("%lf\n", 11.0 / 9);

	//강제 형변환
	//printf("%lf\n", (double)11 / 9);
	//printf("%.2lf\n", (int)8.43 + 2.59);
	//printf("%d\n", (int)(8.43 + 2.59));
	//printf("%d\n", (int)8.43 + (int)2.59);

	//문자 형변환
	char data = 67;
	printf("%c\n", data);
	printf("%d\n", 'A' + 9);
}

 

3) encryption.c

#include<stdio.h>
void main() {
	char pw[7] = "a1b2c3";
	char en_pw[7] = "";

	for (int i = 0; i < 7; i++) {
		en_pw[i] = (char)(pw[i] * 3);
	}

	printf("기존 : %s\n", pw);
	printf("암호화 : %s\n", en_pw);
}

 

4) scanfTest.c

#include<stdio.h>

void main() {
	//정수 2개 입력받기
	//초기값 : 정수는 0, 실수는 0.0, 문자는 ' '
	int num1 = 0, num2 = 0, result = 0;
	const char* n1Msg = "첫번째 정수 : ";
	const char* n2Msg = "두번째 정수 : ";
	
	printf("%s", n1Msg);
	scanf_s("%d", &num1);
	
	printf("%s", n2Msg);
	scanf_s("%d", &num2);

	result = num1 + num2;

	printf("num1 : %d\n", num1);
	printf("num2 : %d\n", num2);

	printf("%d+%d=%d\n", num1, num2, result);

}

 

5) scanfTask.c

#include<stdio.h>
void main() {
	//두 정수를 입력받고
	//몫과 나머지 출력하기
	//몫 : /
	//나머지 : % (예 : 10 % 3 == 1
	int num1 = 0, num2 = 0;
	int value = 0, rest = 0;
	const char* numMsg = "정수 2개를 입력하세요.\n예)1,2\n";

	//두 정수를 동시에 입력받기
	//여러 개를 입력받을때 
	//입력받을 서식문자에 입력받을 값과 구분점을 넣어서 사용 가능
	printf("%s", numMsg);
	scanf_s("%d,%d", &num1, &num2);


	/*
	//두 정수를 각각 입력받기
	//const char* n1Msg = "첫번째 정수 : ";
	//const char* n2Msg = "두번째 정수 : ";

	//printf("%s", n1Msg);
	//scanf_s("%d", &num1);

	//printf("%s", n2Msg);
	//scanf_s("%d", &num2);
	*/


	value = num1 / num2;
	rest = num1 % num2;
    
	printf("%d/%d=%d\n", num1, num2, value);
	printf("%d%%%d=%d\n", num1, num2, rest);
	//printf("몫\t: %d\n", value);
	//printf("나머지\t: %d\n", rest);
}

 

6) bitOper.c

#include<stdio.h>

void main() {
	printf("%d\n", 10 & 11);
	printf("%d\n", 10 | 11);
	printf("%d\n", 10^11);
	printf("%d\n", ~10);
	printf("%d\n", ~-11);
}

'웹_프론트_백엔드 > 단과' 카테고리의 다른 글

[단과_C] 2020.02.18  (0) 2020.02.19
[단과_JAVA] 2020.02.18  (0) 2020.02.18
[단과_JAVA] 2020.02.17  (0) 2020.02.17
[단과_C] 2020.02.14  (0) 2020.02.15
[단과_JAVA] 2020.02.14  (0) 2020.02.15