본문 바로가기
학습/IT

[IT] C언어 입문(5) Operators, 연산자 - 논리연산자, 단축평가, 대입연산자, if문 및 while문 활용

by 개성공장 2021. 8. 22.
반응형

 연산자

 * Logical Operators

 - !, ||, &&

 - logical_expression ::= logical_negation_expr | logical_or_expr | logical_and_expr

 - logical_negation_expr ::= !expr  (not)

 - logical_or_expr ::= expr || expr  (or)

 - logical_and_expr ::= expr && expr  (and)

 - The result is 0 or 1 (int)

 - ex) (80<= s) && (s<90)    : 80 <= s < 90

 - ex) printf("%d\n", a==b||c==d);

 

 * Short-circuit Evaluation

 - The evaluation process stops as soon as the outcome 0 or 1 is known

 - expr1 && expr2   : expr1을 계산했을 때, 0이 나온 경우 expr2를 계산하지 않고 결과값 0을 출력

 - expr1 || expr2 : expr1이 1일 때, expr2를 계산하지 않고 1을 출력

 ex) if(i==1 && b++) ...  : 좋은 코드는 아니지만 문법적으로 문제가 없는데, i=0인 경우에 b++의 증가연산이 실행되지 않고 지나감

 

 * Bitwise Logical Operators(비트단위 논리연산자) and Shift Operators(시프트 연산자)

 - Logical operators : Complement(~), and(&), or(|), exclusive or (^)

 - Left and right shift : expr1 << expr2,  expr1 >> expr2

 - example

a=10; b=22;      // a=00001010, b=00010110
c=a&b;           // c=00000010   => 결과값 2

char a=2, b;     // a=00000010
b=a<<2;          // b=00001000  => 결과값 8
b=a>>4;          // b=00000000

 - shift operator는 2, 4, 8, 16 ... 을 곱하는 효과가 있음

 

 

 * Compound assignment operators

 - " +=, -=, *=, /=, %=, &=, |=, ^=, >>=, <<= "

 - example

a += 10;   =>   a=a+10;
a >>=10;   =>  a = a>>10
a<<=10;   =>   a = a<<10   ...

 

 

카페

 

 

연산자의 활용

 * Flow of Control

 - Sequential flow of control : Statements in a program are executed one after another in the order they placed in the program.

 

 * Simple Statement

 - Expressions (including assignments)

 - return, goto, continue, and break

 - example

x=3;
2+3;
return 0;
;
printf("%d\n", x);

 

 * Compound Statement

 - A series of declarations and statements surrounded by braces, (a block)

 - example

{
	int a;
	a = 1;
	{
		b = 2;
		c = 3;
	}
}

 

 * If Statement

 - if_statement ::= if (expr) statement

 - if_else_statement ::= if (expr) statement  else  statement

 - 조건문에서 0만 아니면 true라는 것에 유의

 - example

if(x==y) {
	printf("%d\n", x);
} else {
	printf("%d\n", y);
}

 - if와 else가 여러개인 경우, else는 가장 가까운 if에 맞물려 동작

 

 * While Statement

 - while_statement ::= while (expr) statement

1. expr is evaluated

2. if it is nonzero(true), then statement is executed

3. Control is passed back to the beginning of the while statement

 - 'while' statement is executed repeatedly until expr is zero

※ C언어 입문 시리즈
1. Introduction - C언어의 역사와 기본 개념
2. Variables - 변수, 대입연산자, 구문규칙, 데이터타입 등
3. Data types, 데이터 타입(자료형)
4. Operators, 연산자 - scanf, 산술연산자, 관계연산자, 증감연산자, 대입연산자, 동등연산자 등
5. Operators, 연산자 - 논리연산자, 단축평가, 대입연산자, if문 및 while문 활용
6. Control flow, 제어흐름 - While문, For문, If문, do-while문 등 루프문
7. Function, 함수 - Goto문, getchar와 putchar, 함수 정의와 프로토타입 선언
8. Scope rules/recursion, 변수의 영역규칙과 재귀호출, 난수생성 예시
9. Array와 Pointers, 배열과 포인터
10. Pointer, 역참조, swap 함수 활용, 배열과 포인터 비교
11. File operation 파일연산, String, 다차원 배열 예시
12. structure, union, enumerated types - 구조체, 공용체, 열거체
13. 자료구조(data structure) 예시 - 연결리스트(linked list)
14. C 전처리기(C preprocessor), 함수 포인터(function pointer)
반응형

댓글