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

[단과_C] 2020.02.18

shine94 2020. 2. 19. 10:47

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