expressions (표현식, 수식)
0. 특징
1) 값을 나타내려고 변수, 상수, 연산자로 구성된 식
2) 항상 결과(반환)값을 갖음
operator (연산자)
-산술연산자(+,-,*,/,%) -관계연산자(<,<=,==,!=다르다) -논리연산자(&&and,||or,!)
-증감연산자(++,--) -비트연산자(&,|,^,~,<<)
2. operand(피연산자)
-상수 -변수
primary expression(일차식): 오직 하나의 operand로 이루어진
-identifier -constants -parenthetical expression(괄호식) ex)(2+3)이것도일차식
prefix expression(전위연산자 수식): operator가 operand 앞에 나옴
x= ++a -> ➀ a = a+1 -> ➁ x = a (a에 1을 더하고 x에 a를 대입) (선증가 후연산)
postfix expression(후위연산자 수식): operator가 operand 앞에 나옴
x= a++ -> ➀ x = a -> ➁ a = a+1 (x에 a를 대입하고 a에 1을 더함) (선연산 후증가)
1) operand(피연산자)로 변수만 가능하다. (상수나 일반수식이 올 수 없다.)
Unary expression(단항식): operator-operand (피연산자가 1개)
-sizeof(int): data형의나 값의 크기를 바이트 수로 표시
-+a -++a -형변환 연산자 ex) (float) x
Binary expression(이항식): operand-operator-operand
Ternary expression(삼항식): A ? B : C=> A가 참이면 값 B 아니면 값 C
assignment expression(할당수식):
1. variable = expression => 우측의 값을 좌측에 저장(대입)하라. ex) a*b = c (X)
2. 대입연산자는 오른쪽부터 해석 A = B = C = 0 <=> A = ( B = ( C = 0))
precedence & associativity
precedence: 다른 연산자들 사이의 우선순위
2. associativity: (괄호를 활용한) 같은 순위의 연산자들 사이의 우선순위
L -> R: 왼쪽부터 계산하기 - R -> L: 오른쪽부터 계산하기
type conversion –implicit type conversion
-explicit type conversion
implicit type conversion:
0. conversion rank
assignment expression에서의 type conversion
(등호로 대입하면서 형변환이 나타난다.) (형의 확장과 축소 모두 가능하다.)
1) ‘실수’ = ‘정수’: (확장)
2) ‘정수’ = ‘실수’: (축소) 실수의 소수점이 버려진다.
3) 바이트 작은 것 = 바이트 큰 것: 변환하고자 하는 정수의 바이트 크기에 맞춰서 상위 바이 상위 바이트가 소멸된다. (부호가 바뀌거나하는 현상가능)
2. promotion(형 확장): 하나 이상의 데이터 형이 혼합식을 구성할 때 가장 큰 데이터 형에 맞춰 형변환이 이루어지는 규칙
(혼합식에서의 형변환) (확장만 가능하다->conversion rank를 따른다.)
연산 직전에 가장 큰 데이터 형으로 다른 데이터들이 형확장이 일어난다.
ex) (5/4 + 1.0/2) => (5/4 + 1.0/2.0) => (1 + 0.5) => (1.0 + 0.5) = 1.5
explicit type conversion
(시스템, 운영체제, 컴파일러의 종류에 따라 각 데이터형의 메모리 저장크기가 다를 수 있다.)
(type) expression .
ex1) (float)35/2 => 35.0/2 => 17.5
ex2) (float)(35/2) => (float)(17) => 17.0
statements
null statements
2. expression statements
3. return statements
4. compound statements
'C언어' 카테고리의 다른 글
11-2강 구조체 포인터 (0) | 2020.04.09 |
---|---|
11-1강 - 구조체 기본 (0) | 2020.04.09 |
9강 - Pointer Application (0) | 2020.03.31 |
3강 - 함수 (function) (0) | 2020.03.02 |
1강 - Introduction to C (0) | 2020.03.02 |