@ CPU에게 연산(operation)을 시키기 위해서 정의한 기호를 가리켜 연산자(operator)라고 한다.

@ 변수를 선언하는 선언문에도 연산식이 올 수 있다.

@ printf문보다 연산식이 먼저 실행된다!!!

@두 개의 피연산자가 모두 정수이면 정수형 나눗셈을 하고 두 개의 피연산자가 실수이면 실수형 나눗셈을 한다.

@ 두 연산자의 자료형이 일치하지 않는 경우?
연산을 위해서 하나의 피연산자가 다른 하나의 피연산자 자료형으로 자동 형 변환된다. 데이터의 손실을 최소화하기 위해 값의 표현범위가 넓은 쪽으로 이뤄진다.

@ % 연산자는 정수형 나눗셈의 나머지를 반환한다. 고로 피연산자는 정수형이어야 하며 실수형은 컴파일 에러를 발생시킨다.

@ int num = 5 - (3+2) 에서 소괄호는 연산의 단위를 구분 지어주는 구분자(separator)이다.

@ 복합대입연산자 +=, -= 들은  +와 =사이에 공백이 있으면 컴파일 오류가 발생한다.

@ 단항 연산자로써 -는 부호를 바꾸는 역할을 한다.

@ 한 문장 안에서 동일한 변수를 가지고 두 번 이상 postfix ++,postfix-- 연산을 하면 결과를 예측할 수 없다.

@ num=num++또는 num=num--와 같은 문장의 연산결과도 예측할 수 없다.

@ 관계 연산자(비교연산자)는 크기 및 동등 관계를 따지는 연산자이다.

@ C언어에서는 0을 '거짓'을 의미하는 숫자로 0이 아닌 숫자를 모두 '참'을 의미하는 숫자로 정의한다.

@ Short-Circuit Evaluation (&&,||)는 왼편의 피연산자를 판별해서 &&경우 왼쪽이 거짓이면, ||경우 왼쪽이 참이면 연산속도의 향상을 위해 오른쪽은 실행하지 않는다

@ 콤마연산자 : 둘 이상의 변수를 동시에 선언하거나, 둘 이상의 함수 호출 문, 연산문을 하나의 문장으로 표현하는 경우에 사용하는 연산자이다.

@ 자료형 변환 연산자(Cast Operator)는 새로운 값을 반환한다.

@ sizeof 연산자 : 피연산자의 크기를 바이트 단위로 계산해서 반환하는 연산자이다. 피연산자로 자료형의 이름도 올 수 있다. 피연산자가 자료형의 이름이 아니면 소괄호는 생략 가능하나 보통 소괄호를 하는 것이 일반적이다.

@ lvalue(Left Value) : 대입 연산자의 왼편에 올 수 있는 대상. 대입이 가능한 피연산자. 모든 변수는 lvalue지만 모든 lvalue가 변수는 아니다. lvalue required라는 에러 메시지는 대입이 가능한 대상이 (ex 상수)  왼쪽에 왔다는 의미이다.

@ 산술변환(Usual Arithmetic Conversion) : 이항 연산에서 두 항의 자료형이 일치하지 않을 경우 형변환을 하는 것, 데이터 손실이 발생할 확률을 줄이는 쪽으로 형변환이 이뤄진다.
-정수형보다 실수형을 우선시
-바이트 수가 작은 것보다 큰것을 우선시
-unsigned를 우선시

@ 대입연산에서의 형 변환은 무조건 lvalue를 기준으로 이뤄진다. 저장이 이뤄져야 할 메모리 공간을 기준으로 형변환이 이뤄진다.
 int num;
num =3.15
라는 코드에서 num은 결국 3으로 변환되어 대입연산이 이뤄진다.


Posted by Taoist
,