형 변환, sizeof, 복합대입, 콤마 연산자
형 변환 연산자
형 변환 연산자는 피연산자가 1개이며 피연산자의 값을 원하는 형태로 바꾼다.
(자료형)피연산자
자동 형 변환
==> 컴파일러는 컴파일 과정에서 피연산자의 형태가 다르면 형태를 일치시키는 작업을 수행
(컴퓨터는 데이터의 형태에 따라 다른 연산 방법을 사용, 피연산자가 2개 이상이라면 피연산자의 형태는 같아야 함)
sizeof 연산자
sizeof 연산자는 피연산자를 하나만 사용할 수 있으며 피연산자의 크기를 바이트 단위로 계산해서 알려준다
sizeof(피연산자)
피연산자
==> 변수, 상수, 수식, 자료형 등
#include <stdio.h>
int main(void)
{
int a = 10;
double b = 3.4;
printf("int형 변수의 크기 : %d\n", sizeof(a));
printf("double형 변수의 크기 : %d\n", sizeof(b));
printf("정수형 변수의 크기 : %d\n", sizeof(10)); // 4바이트로 표현할 수 없는 범위의 상수를 사용하면 8바이트
printf("수식의 결과값의 크기 : %d\n", sizeof(1.5 + 3.4)); // 결과값이 실수이므로 8바이트
printf("char 자료형의 크기 : %d\n", sizeof(char));
return 0;
}
sizeof 연산자와 괄호
sizeof는 연산자이므로 기본적으로 피연산자에 괄호를 사용할 필요가 없다.
printf("수식의 결과값의 크기 : %d\n", sizeof(1.5 + 3.4));
printf("char 자료형의 크기 : %d\n", sizeof(char));
그러나
첫 번째 코드의 sizeof 1.5 + 3.4는 값이 11.4가 나오고
두 번째 코드의 sizeof char는 에러가 발생하므로 괄호를 사용해주어야 한다.
복합대입 연산자
연산결과를 다시 피연산자에 저장한다
#include <stdio.h>
int main(void)
{
int a = 10, b = 20;
int res = 2;
a += 20;
res *= b + 10;
printf("a=%d, b=%d\n", a, b);
printf("res = %d\n", res);
return 0;
}
res *= b + 10;
컴퓨터에서 위의 코드가 처리되는 방식
콤마 연산자
콤마 연산자(,)는 한 번에 여러 개의 수식을 차례로 나열해야 할 때 사용한다. 콤마 연산자는 왼쪽부터 오른쪽으로 차례로 연산을 수행하며 가장 오른쪽의 피연산자가 최종 결괏값이 된다.
#include <stdio.h>
int main(void)
{
int a = 10, b = 20;
int res;
res = (++a, ++b);
printf("a:%d, b:%d\n", a, b);
printf("res:%d\n", res);
return 0;
}
주의사항
콤마 연산자는 대입 연산자보다 우선순위가 낮은 유일한 연산자
res = (++a, ++b);
res = ++a, ++b;
// res = ++a; res = ++b; 와 같다
우선순위의 차이 때문에 위의 코드는 다른 결과가 나온다.
'C 언어 > [책 정리] 혼자 공부하는 C언어' 카테고리의 다른 글
if 문 (0) | 2022.12.06 |
---|---|
그 외 유용한 연산자 (2) (0) | 2022.12.01 |
산술 연산자, 관계 연산자, 논리 연산자 (2) (0) | 2022.12.01 |
산술 연산자, 관계 연산자, 논리 연산자 (1) (0) | 2022.12.01 |
데이터 입력 (0) | 2022.11.29 |