티스토리 뷰

C언어/K.N.King C PROGRAMMING

Chapter 5

소심야채 2020. 8. 25. 15:59

Selection Statements

 

 

C의 문장(statement)의 대부분은 문장이 실행되는 순서에 어떤 영향을 미치는지에 따라 세 가지 범주로 분류된다.

 

■ Selection statements : if 및 switch 문을 사용하면 프로그램이 특정 실행 경로를 선택할 수 있다.

 

■ Iteration statements : while, do 및 for문은 반복을 지원한다.

 

■ Jump statements : break, continue 및 goto문은 프로그램이 다른 위치로 무조건 점프한다. (return문도 포함)

 

 

 

Logical Expressions

 

■ 많은 프로그래밍 언어에서 i<j 같은 표현식은 "Boolean" 또는 "logical" 타입을 갖는다. 이러한 타입은 거짓 그리고 참 두 가지 값만 가진다. 그러나 C에서 i<j 같은 comprision은 0(false) 또는 1(true)의 정수를 반환한다.

 

■ 관계연산자(<. >, <=, >=)은 왼쪽 결합성을 가진다. 따라서 i < j < k 표현식은 (i < j) < k 와 동일하다.

 

■ 같음연산자(==, !=)은 왼쪽 결합성을 가지며, 0(false) 또는 1(true)를 반환한다.

 

Logical Operators

Symbol Meaning
! logical negation
&& logical and
|| logical or

■ 논리 연산자는 결과로 0 또는 1을 반환한다. 종종 피연산자는 0 또는 1의 값을 갖지만 필수사항이 아니다. 논리 연산자는 0이 아닌 피연산자참 값으로, 0인 피연산자거짓 값으로 처리한다.

 

&&와 || 둘다 피연산자의 "단락"평가를 수행한다. 먼저 왼쪽 피연산자를 평가 한 다음 오른쪽 피연산자를 평가한다. 표현식의 값을 왼쪽 피연산자의 값만으로 추론 할 수 있는 경우 오른쪽 피연산자는 평가되지 않는다.

 

 

 

The "Dangling else" Problem

 

■ C에서는 else 절이 아직 else와 쌍을 이루지 않은 가장 가까운 if 문에 속한다는 규칙을 따른다.

 

 

 

Boolean Values in C99

 

■ _Bool 타입을 제공하는 C99에서는 오랫동안 Boolean 타입이 없었던 문제가 해결되었다. 이 버전의 C에서는 Boolean 변수가 _Bool 작성을 통해 선언 할 수 있다.

 

■ _Bool은 정수 타입(정확하게는 부호없는 정수 타입)이므로 _Bool 변수는 실제로 변장 된 정수 변수이다.

 

_Bool 유형을 정의하는 것 외에도 C99는 새로운 헤더 <stdbool.h>를 제공하므로 Boolean 값으로 작업하기가 더 쉬워진다. 이 헤더는 _Bool 을 나타내는 bool 매크로를 제공한다. ex) bool flag;   // same as _Bool flag;

 

■ <stdbool.h> 헤더는 또한 각각 1과 0을 나타내는 true 및 false라는 이름의 매크로를 제공한다.

 

 

 

The switch Statement

 

swtich ( expression ) {

    case constant-expression : statements

    ...

    case constant-expression : statements

    default : statements

}

 

■ Controlling expression : 스위치 뒤에있는 괄호 안에는 정수 표현식이 있어야 한다.

 

■ Case labels : 상수 표현식은 변수나 함수 호출을 포함 할 수 없다는 점을 제외하면 일반 표현식과 매우 유사하다. 따라서 5는 상수 표현식이고 5+10 또한 상수 표현식이나 n+10은 상수 표현식이 아니다. 레이블 케이스에서는 정수로 평가해야 한다.

 

 

 

Q&A

 

Q. i가 정수형 변수이고 f가 실수형 변수일 때 조건식의 타입은 무엇인가? (i>0 ? i : f)?

 

A. 조건식(삼항연산자)에 int 와 float이 섞인다면 조건식은 float 타입을 가진다. 만약 i>0 이 참이라면, 정수형 변수 i가 실수형으로 전환된다.

'C언어 > K.N.King C PROGRAMMING' 카테고리의 다른 글

Chapter 7  (0) 2020.08.27
Chapter 6  (0) 2020.08.26
Chapter 4  (0) 2020.08.24
Chapter 3  (0) 2020.08.20
Chapter 2  (0) 2020.08.19
댓글