형 변환 연산자
형 변환 연잔자는 피연산자가 1개이며 피연산자의 값을 원하는 형태로 바꿉니다.
예를 들어 정수를 실수로, 실수를 정후로 바꿀 수 있다는 말입니다.
형 변환 연산자를 사용해서 피연산자의 형태를 바꿀 때는 피연산자의 값을 복사하여 일시적으로 형태를 바꾸므로
연산 후 메모리에 있는 피연산자의 형태나 값은 변하지 않습니다.
int a= 10;이라고 선언하며 a는 정수형이고 그 안의 값은 정수 입니다.
이 값을 일시적으로 실수로 사용하고 싶르면 a앞에 괄호로 (double)처럼 원하는 자료형을 넣으면 됩니다.
(자료형) 피연산자
(double)10 -> 10.0 정수를 실수로 바꾸는 경우
(int)10.7 -> 10 실수를 정수로 바꾸는 경우
여기서 핵심은 일시적으로 변환해주는 것이다.
자동 형 변환
컴퓨터는 데이터의 형태에 따라 다른 연산 방법을 사용하므로
피연산자가 2개 이상이라면 피연산자의 형태가 같아야한다.
따라서 컴파일러는 컴파일 과정에서 피연산자의 형태가 다르면 형태를 일치시키는 작업을 해줍니다.
이를 자동 형 변환이라 합니다.
이런 형 변환의 기본 규칙은 크기가 작은 값이 크기가 큰 값으로 바뀌는 겁니다.
예를 들어 정수(4바이트)와 실수(8바이트)를 연산하면 정수가 실수로 자동 변환이 됩니다.
하지만 예상치 못한 값의 변형이 생길 수 있으니 가능하면 피연산자의 형태를 같게 사용하는 것이 좋다.
sizeof 연산자
sizeof 연산자는 피연산자를 하나만 사용할 수 있으며, 피연산자의 크기를 바이트 단위로 계산해서 알려줍니다.
sizeof(피연산자)로 표기하며 피연산자의 대상은 변수, 상수, 수식, 자료형등이 될 수 있습니다.
int형의 크기를 구할 때
sizeof (int) : 연산자 피연산자(자료형)
상수의 크기를 구할 때
sizeof (10) : 연산자 피연산자(상수)
이 연산자는 데이터의 크기를 확인하거나 메모리를 동정으로 할당하는 작업 등에 유용하게 사용됨
예를 들어
int형 변수는 크기가 4바이트
1바이트는 8비트이므로 int형 변수는 메모리에 32비트의 데이터를 저장할 수 있습니다.
자세한것은 책을 참고하자
복합대입 연산자
대입연산자(=)와 증감 연산자(++,--)를 제외한 다른 연산자는 연산하고 나서 피연산자의 값을 바꾸지 않습니다.
만약에 연산 결과를 피연산자에 저장할 필요가 있다면 추가로 대입 연산을 수행해야합니다.
복합대입 연산자는 연산 결과를 다시 피연산자에 저장합니다.
산술 복합대입 연산자로는 이렇게 +=, -= ,/= , %= 다섯가지가 있습니다.
이건 뭐 파이썬이란 비슷하다. 예시는 책을 참고하자
콤마 연산자
콤마 연산자(,)는 한번에 여러개의 수식을 차례로 나열해야 할 때 사용합니다.
콤마 연산자는 왼쪽부터 오른쪽으로 차례로 연산을 수행하며 가장 오른쪽의 피연산자가 최종 결과값이 됩니다.
조건 연산자
조건 연산자는 유일한 삼항 연산자로 ?와 : 기호를 함께 사용합니다.
조건 연산자는 첫 번째 피연산자가 참이면 두 번째 피연산자가 결괏값이 되고,
첫 번째 피연산자가 거짓이면 세 번째 피연산자가 결괏값이 됩니다.
예를 들어
(a>b) ? a: b
조건식이 참이면 a 선택 거짓이면 b 선택
순서)
1) a = 10 , b= 20을 대입하면 10 > 20은 거짓이다.
2) 조건 연산자에서 거짓일 때는 세 번째 값(b)을 선정한다.
3) 선정한 세번째 값(b)을 res에 대입한다.
조건 연산자의 피연산자에 대입식 사용하기
조건 연산자의 피연산자에 대입식을 직접 사용할 수도 있습니다.
비트 연산자
비트 연산자는 데이터를 비트 단위로 연산합니다.
비트 연산자에 논리 연산을 수행하는 & | ^ 같은 비트 논리 연산자와 비트들을 좌우로 움직이는
>>,<< 같은 비트 이동 연산자가 있습니다.
비트 연산자는 데이터를 비트로 정확히 표현할 수있는 정수에만 사용가능
이 내용도 책을 참고해라
'코딩 > c언어' 카테고리의 다른 글
if 문 활용과 switch ~ case문 (0) | 2021.05.01 |
---|---|
선택문 5-1 if 문 (0) | 2021.05.01 |
산술 연산자, 관계 연산자, 논리 연산자 (0) | 2021.04.27 |
c언어 3-1 (0) | 2021.04.24 |
c언어 2-2 상수와 데이터 표현 방법 (0) | 2021.04.23 |