Computer Science/C

C언어 2강 | 어휘 요소와 연산자 Lexical Elements & Operators

토마토. 2021. 12. 15. 19:39

컴파일러 Compiler

C code의 적법성을 판단함

C code를 object code로 변환한다. 

 

C Program

compiler는 C 프로그램에서 6 가지 token을 모은다.

keywords

identifiers

constants

string constants

operators

punctuators

 

Characters used in a C prog

 

abcde ABCDE 12345 +-*/=(){}[]<>''"" !#%_|^~\.,;:? etc

주석 Comments

// 

/* */

Keywords

특정한 의미를 나타내는데 사용되는 keywords는 다른 맥락으로 사용할 수 없다. C는 가벼운 언어라 keywords가 상대적으로 적다. 

auto, do, goto, signed, unsigned, break, double, if, sizeof, void, case, else, int, static, volatile, char, enum, long, struct, while, const, extern, register, switch, continue, float, return, typedef, union, for, short, default

잘 모르겠는 것 : 빨간색

 

변수 Identifiers

의미를 담아서 작명할 것

상수 Constants

유형 : integer(0, 17), floating(1.0, 3.141592), character('a', '\n')

 

integer constant

integer constant(decimal, octal, Hexadecimal)

** 주의 **

-49는 constant expression이다. (constant 자체가 아님)

 

String Constants

'a'는 character constant, "a"는 string constant이다. 

string constant는 "" 으로 표현한다. 

 

연산자 Operators & 문장 부호 Punctuators

산술적인 연산자 Operators

+-*/% 등등

 

문장 부호 Punctuators

{} , ; () 등

연산 우선순위 Precedence and 연산 방향 Associativity of Operators

Precedence : 연산의 우선순위

* 괄호를 이용하면, 명료하게 순서를 표현할 수 있다. 

 

Associativity of Operators : 연산자의 연산 방향

type 1. left -> right (default)

(), (postfix)++, (postfix)--

* / % + -

type 2. right -> left

(할당 assignment) = += -= *= /= 등

(단항 연산 unary) + - ++(prefix) --(prefix)

Increment and Decrement Operators

++i (prefix), i++(postfix)는 차이가 있음

Assignment Operators

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

기본적으로 right to left