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 |