1. 비트 연산
: 비트연산은 주로 RGB, 네트워크, 직렬화 및 역직렬화(시리얼)에 사용
1) 논리 연산자
& AND(논리곱) : 두 비트 모두 1일 때 1
| OR(논리합) : 둘 중 하나라도 1이면 1
^ XOR(배타논리합) : 두 비트가 서로 다르면 1
2) 단항 연산자
~ NOT(논리부정) : 0은 1로 1은 0으로 변경
~a = -a - 1
3) 부호 비트
: 비트는 우에서 좌로 읽으며 좌측에 있는 비트가 최상위 비트
부호비트는 최상위 비트이며 0은 양수, 1은 음수이다.
4) 비트 이동(쉬프트 연산자)
<< (LEFT SHIFT) a << b : a를 b만큼 좌로 비트이동
>> (RIGHT SHIFT) a >> b : a를 b만큼 우로 비트이동
** 빈 칸은 0으로 채워지고(음수는 1) 비트가 넘어가면 자동으로 잘린다 **
2. 조건식
: 결과가 참 또는 거짓, 둘 중 하나가 나오는 식
거짓 : 0
참 : 0이외의 모든 수(1)
1) 관계 연산자
== : 같다
!= : 같지 않다
>, < : 초과, 미만
>= ,<= : 이상, 이하
7) 논리 연산자(조건식이 2개 이상일 때 사용)
&& AND : A && B 두 조건식 모두 참이면 참
|| OR : A || B 둘 중 하나라도 참이면 참
8) 단항 연산자
! NOT : 참이면 거짓으로 거짓이면 참으로 변경
3. 삼항 연산자(? :)
조건식 ? 참 : 거짓
1) 조건식 ? 값1 : 값2
예) int result = (10 > 1 ? 10 : 1) + 4;
2) 조건식 ? 문장1 : 문장2
예) 10 > 1 ? printf("10") : printf("1");
4. 제어문
1) 조건문
if문
if(조건식){
실행할 문장;
}
위의 조건식에 상관없이 모두 검사
if(조건식){
실행할 문장;
}
if(조건식){
실행할 문장;
}
if(조건식){
실행할 문장;
위의 조건식이 참이면 모두 검사 안함
}else if(조건식){
실행할 문장;
}else{
실행할 문장;
}
5. 삼항연산자는 if문보다 속도가 더 빠르다. 하지만 메모리를 더 사용한다.
if문은 속도가 더 느린 대신 메모리를 덜 사용한다.
6. 오늘 소스코드
1) operTest.c
#include<stdio.h>
void main(){
//조건식 : isTrue
int isTrue = 10 > 1;
printf("%d\n", isTrue);
//printf("%d\n", 10 > 1);
//printf("%d\n", 10 == 1 && 10 > 1);
//printf("%d\n", 10 == 1 || 10 > 1);
//printf("%d\n", !10 < -1);
//printf("%d\n", !(10 < -1));
}
2) operTest2.c
#include<stdio.h>
void main() {
//정수 2개를 입력받기
const char* n1Msg = "첫번째 정수 : ";
const char* n2Msg = "첫번째 정수 : ";
int num1 = 0, num2 = 0, result = 0;
printf("-9999는 비교대상이 아닙니다.\n");
printf("%s", n1Msg);
scanf_s("%d", &num1);
printf("%s", n2Msg);
scanf_s("%d", &num2);
result = num1 > num2 ? num1 : num1 == num2 ? -9999 : num2;
result == -9999 ? printf("두 수는 같습니다.\n") : printf("큰 값 : %d\n", result);
}
3) quiz.c
#include<stdio.h>
void main() {
/*
Q.다음 중 프로그래밍 언어가 아닌 것은?
1. JAVA
2. 파이썬
3. C언어
4. 망둥어
정답시 정답! 출력, 오답시 오답ㅠㅠ출력
*/
const char* qMsg = "Q.다음 중 프로그래밍 언어가 아닌 것은?\n";
const char* choiceMsg = "1. JAVA\n2. 파이썬\n3. C언어\n4. 망둥어\n";
int choice = 0, answer = 4;
printf("%s%s", qMsg, choiceMsg);
scanf_s("%d", &choice);
if (choice == answer) {
printf("정답!\n");
}
else if (choice >= 1 && choice <= 4) {
printf("오답ㅠㅠ\n");
}
else {
printf("다시 시도해주세요\n");
}
//printf("%s\n", choice == answer ? "정답!" : choice >= 1 && choice <= 4 ? "오답ㅠㅠ" : "?");
}
4) bloodType.c
#include<stdio.h>
void main() {
//당신의 혈액형은?
//1.A
//2.B
//3.O
//4.AB
const char* msg = "당신의 혈액형은?\n1.A\n2.B\n3.O\n4.AB\n";
int choice = 0;
const char* a_msg = "섬세하고 꼼꼼하다.\n";
const char* b_msg = "추진력이 좋다.\n";
const char* o_msg = "사교성이 좋다.\n";
const char* ab_msg = "착하다.\n";
const char* err_msg = "다시 시도해주세요\n";
printf("%s", msg);
scanf_s("%d", &choice);
choice == 1 ? printf("%s", a_msg) :
choice == 2 ? printf("%s", b_msg) :
choice == 3 ? printf("%s", o_msg) :
choice == 4 ? printf("%s", ab_msg) :
printf("%s", err_msg);
}
'웹_프론트_백엔드 > 단과' 카테고리의 다른 글
[단과_C] 2020.02.19 (0) | 2020.02.19 |
---|---|
[단과_JAVA] 2020.02.19 (0) | 2020.02.19 |
[단과_JAVA] 2020.02.18 (0) | 2020.02.18 |
[단과_C] 2020.02.17 (0) | 2020.02.17 |
[단과_JAVA] 2020.02.17 (0) | 2020.02.17 |