1. 연산자
C언어에는 다양한 연산자가 존재한다.
2. 산술 연산자
2.1 +
두 수의 합을 계산한다.
int a = 10;
int b = 10;
int result = a + b; // 20 이 된다.
2.2 -
첫 번째 수에서 두 번째 수를 뺀다.
int a = 10;
int b = 10;
int result = a - b; // 0 이 된다.
2.3 *
두 수의 곱을 계산한다.
int a = 10;
int b = 10;
int result = a * b; // 100 이 된다.
2.4 / (나누기)
첫 번째 수를 두 번째 수로 나눈다.
두 개의 피연산자가 모두 정수이면 결과는 몫만 반환한다. (소수점 이하는 버린다.)
여기서 두 번째 수가 0이 되어서는 안된다.
int a = 10;
int b = 10;
int result = a / b; // 1 이 된다.
float a = 10.0;
int b = 10;
int result = a / b; //1.00000000 이 된다.
2.5 % (나머지)
첫 번째 수를 두 번째 수로 나눈 후의 나머지를 반환한다. 이 연산자는 정수에만 사용 가능하다.
int a = 10;
int b = 3;
int result = a % b; // 1 이 된다.
3. 관계 연산자
관계 연산자는 참(1) 또는 거짓(0)으로 나타난다.
3.1 등호 (==)
두 피연산자의 값이 같은 경우 참을 반환한다.
int a = 10;
int b = 10;
if(a==b) // 참을 반환
3.2 부등호 (≠)
두 피연산자의 값이 다른 경우 참을 반환한다.
int a = 10;
int b = 10;
if(a!=b) // 거짓을 반환
3.3 > , ≥, <, ≤
왼쪽 피연산자의 값이 오른쪽 피연산자보다 큰지, 크거나 같은지, 작은지, 작거나 같은지를 비교한다.
int a = 10;
int b = 10;
if(a>b) // 거짓을 반환
if(a>=b) // 거짓을 반환
if(a<b) // 거짓을 반환
if(a<=b) // 거짓을 반환
4. 논리 연산자
주로 조건문이나 반복문에서 두 개 이상의 조건을 결합할 때 사용한다.
논리 연산자는 연산의 결과로 참(true) 또는 거짓(false)를 반환한다.
C에서 참은 0이 아닌 모든 값이고, 거짓은 0으로 표현된다.
4.1 AND (&&)
두 조건이 모두 참이면 참을 반환한다.
4.2 OR (||)
두 조건 중 하나라도 참이면 참을 반환한다.
4.3 NOT(!)
두 조건의 반대를 반환한다.
참이면 거짓을, 거짓이면 참을 반환한다.
#include <stdio.h>
int main() {
int a = 5, b = -2, c = 0;
// AND 연산자
if (a > 0 && b > 0) {
printf("a와 b 모두 양수입니다.\\n");
} else {
printf("a 또는 b 둘 중 하나 이상이 양수가 아닙니다.\\n");
}
// OR 연산자
if (a > 0 || b > 0) {
printf("a 또는 b 둘 중 하나 이상이 양수입니다.\\n");
} else {
printf("a와 b 모두 양수가 아닙니다.\\n");
}
// NOT 연산자
if (!c) {
printf("c는 0입니다.\\n");
} else {
printf("c는 0이 아닙니다.\\n");
}
return 0;
}
5. 비트 연산자
5.1 AND (&)
두 비트 모두 1일 때 결과가 1이 된다.
5.2 OR (|)
두 비트 중 하나라도 1이면 결과가 1이 된다.
5.3 XOR (^)
두 비트가 서로 다르면 1이다.
5.4 NOT (~)
모든 비트를 반전시킨다. 1은 0으로, 0은 1로
5.5 Left Shift (<<)
모든 비트를 왼쪽으로 지정된 수만큼 이동시킨다. (오른쪽에는 0이 채워진다.)
5.6 Left Right (>>)
모든 비트를 오른쪽으로 지정된 수만큼 이동시킨다. (왼쪽에는 부호 비트와 같은 비트로 채운다.)
#include <stdio.h>
int main() {
unsigned char a = 12; // 00001100 in binary
unsigned char b = 25; // 00011001 in binary
// AND 연산
printf("a & b = %d\\n", a & b); // 00001000, which is 8 in decimal
// OR 연산
printf("a | b = %d\\n", a | b); // 00011101, which is 29 in decimal
// XOR 연산
printf("a ^ b = %d\\n", a ^ b); // 00010101, which is 21 in decimal
// NOT 연산
printf("~a = %d\\n", (unsigned char)~a); // 11110011, which is 243 in decimal
// Left Shift 연산
printf("a << 2 = %d\\n", a << 2); // 00110000, which is 48 in decimal
// Right Shift 연산
printf("a >> 2 = %d\\n", a >> 2); // 00000011, which is 3 in decimal
return 0;
}
6. 할당 연산자
6.1 대입 연산자 ( = )
오른쪽 피연산자의 값을 왼쪽 피연산자(변수)에 할당한다.
6.2 복합 대입 연산자
연산과 할당을 동시에 수행한다.
6.2.1 +=
왼쪽 변수에 오른쪽 값을 더하고 결과를 왼쪽 변수에 할당합니다.
예: a += 3; // a = a + 3;과 동일
6.2.2 -=
왼쪽 변수에서 오른쪽 값을 빼고 결과를 왼쪽 변수에 할당합니다.
예: a -= 3; // a = a - 3;과 동일
6.2.3 =
왼쪽 변수에 오른쪽 값을 곱하고 결과를 왼쪽 변수에 할당합니다.
예: a *= 3; // a = a * 3;과 동일
6.2.4 /=
왼쪽 변수를 오른쪽 값으로 나누고 결과를 왼쪽 변수에 할당합니다.
예: a /= 3; // a = a / 3;과 동일
6.2.5 %=
왼쪽 변수를 오른쪽 값으로 나눈 나머지를 왼쪽 변수에 할당합니다.
예: a %= 3; // a = a % 3;과 동일
6.2.6 <<=
왼쪽 변수의 비트를 오른쪽 값만큼 왼쪽으로 이동시키고 결과를 왼쪽 변수에 할당합니다.
예: a <<= 2; // a = a << 2;과 동일
6.2.7 >>=
왼쪽 변수의 비트를 오른쪽 값만큼 오른쪽으로 이동시키고 결과를 왼쪽 변수에 할당합니다.
예: a >>= 2; // a = a >> 2;과 동일
6.2.8 &=
왼쪽 변수와 오른쪽 값을 비트 AND 연산 후 결과를 왼쪽 변수에 할당합니다.
예: a &= 3; // a = a & 3;과 동일
6.2.9 ^=
왼쪽 변수와 오른쪽 값을 비트 XOR 연산 후 결과를 왼쪽 변수에 할당합니다.
예: a ^= 3; // a = a ^ 3;과 동일
6.2.10 |=
왼쪽 변수와 오른쪽 값을 비트 OR 연산 후 결과를 왼쪽 변수에 할당합니다.
예: a |= 3; // a = a | 3;과 동일
#include <stdio.h>
int main() {
int a = 5;
a += 2; // a = a + 2;
printf("a += 2: %d\\n", a);
a -= 3; // a = a - 3;
printf("a -= 3: %d\\n", a);
a *= 4; // a = a * 4;
printf("a *= 4: %d\\n", a);
a /= 2; // a = a /
'Language > C' 카테고리의 다른 글
[ C ] 반복문 (1) | 2024.04.29 |
---|---|
[ C ] 조건문 (0) | 2024.04.29 |
[ C ] 입출력 함수 (0) | 2024.04.29 |
[ C ] 주석, 변수, 자료형 (0) | 2024.04.29 |
[ C ] C언어란? (0) | 2024.04.29 |