정수 피연산자와 실수 피연산자의 연산
같은 자료형의 피연산자들 간의 연산이 일반적이지만,
다른 자료형의 피연산자들간의 연산을 해야 하는 경우가 있을 수 있다
이들의 결과는 피연산자들의 자료형 중 한쪽 자료형만을 따르게 되기 때문에주의해서 사용해야 한다이런 경우가 발생하지 않기 위해서는 형변환을 해주는 것이 좋다
복합 대입 연산자
산술 연산과 대입 연산이 함께 계산되는 연산자를 의미한다
// *= (복합 대입 연산자)은 곱셈과 대입이 한 번에 이뤄진다
mul *= 3; // mul = mul * 3;
증감 연산자 (전치 / 후치)
전치는 지금 바로 연산이 이루어지고
후치는 해당 줄에서 가장 마지막으로 처리되기에 다음 줄에 연산이 된다고 생각하면 된다
int a = 1;
int b = 1;
int prefix = 1 + (++a);// 1 + 2
int prefix1 = a;// a는 2
int postfix = 1 + (b++);// 1 + 1
int postfix1 = b;// b는 2
// 전치 후치 둘다 다음 줄에서는 a와 b 둘다 2
// 다만,
// 전치는 증감연산이 바로 적용이 되었고
// 후치는 증감연산이 다음 줄에서 적용이 되었다
대등 연산자
대등 연산자를 작성할 때는 좌측 피연산자에 상수를 적는 것이 오류를 막을 수 있는 좋은 습관이다
if(num == 3)// 일반적인 방법
if(num = 3)// 실수를 했을 경우, 오류를 발견하기 힘듬
if(3 == num)// 추천하는 방법
if(3 = num)// 잘못된 문법이기에 바로 오류가 발견된다
논리 연산자
C언어에서는 0은 거짓(false)이고 0 이외의 모든 값은 참(true)
논리 연산자의 핵심은
곱 또는 합 단어이며, 굳이 진리표(truth table)를 외울 필요가 없다
&& 는 곱연산, || 는 합연산이라 불린다
ex)
6과 10의 곱연산, 합연산의 예시는 아래와 같다
합연산의 경우 0이 아닌 경우는 1로 된다
삼항 연산자(Ternary Operator)
피연산자로 세 개의 항을 갖는 연산자를 의미한다
조건문 if-else의 대용으로 사용이 가능하다
int x = 10;
int y = 20;
// x와 y 중에서 더 큰 값을 선택하여 max에 할당
int max = (x > y) ? x : y;
// (x > y) 식이
// 참이라면 :(colon)을 기준으로 앞에 값(또는 식)이 계산 결과
// 거짓이라면 colon 뒤에 값(또는 식)이 계산 결과
// 거짓이기에, max에는 y값이 들어감
10진수에서 2진수로 변환하는 법
몫이 0이 될 때까지 2로 계속 나누고 아래와 같이 읽으면 된다
헷갈리는 비트 논리 연산자(Bit-wise Logical Operator)
비트 논리 반전 연산자(~):
전체 비트를 반전 비트
논리 베타합 연산자(^):
비트별로 1의 개수가 홀수개면 그 결과는 1, 짝수개면 0
(기본 논리: 서로 달라야 참)
비트 이동 연산자(Bit-Shift Operator)
비트를 왼쪽 / 오른쪽으로 n번 이동하는 것은 2를 n번 곱 / 나눈 것과 같다
int leftShift = 8;// 이진수로 1000
int result = num << 2;// 좌측으로 2비트 이동
// 8 * 2 * 2
int rightShift = 16; // 이진수로 10000
int result = num >> 3;// 우측으로 3비트 이동
// 16 / 2 / 2 /2
sizeof 주의점
int n;
char ch;
int size = sizeof(n + ch);// 가장 큰 자료형 크기인 4를 출력한다
'C > [코드조선] C 핵심' 카테고리의 다른 글
[C] 반복문 (0) | 2024.02.04 |
---|---|
[C] 조건문과 Intentional-Fallthrough (0) | 2024.02.03 |
[C] 탈출 문자열(Escape Sequence)과 서식 지정자(Format Specifier) (0) | 2024.02.01 |
[C] 컴파일과 빌드 (0) | 2024.02.01 |
[C] Low-Level Language와 High Level Language (0) | 2024.02.01 |