📌 Study
🔸 2022-09-30
[프로그래밍 언어 활용]
1. 기본 문법 활용하기
연산자
개념 : 프로그램 실행을 위해 연산을 표현하는 기호
- 연산자 우선순위
- 증감 연산자
- 산술 연산자
- 시프트 연산자
- 관계 연산자
- 비트 연산자
- 논리 연산자
- 삼항 연산자
- 대입 연산자
증감 연산자
: 피연산자를 1씩 증가 혹은 1씩 감소시킬 때 사용하는 연산자
++x |
변수 값을 1 증가시킨 후에 해당 변수를 사용하는 연산자 |
x++ |
변수를 사용한 후에 변수 값을 1 증가시키는 연산자 |
--x |
변수 값을 1 감소시킨 후에 해당 변수를 사용하는 연산자 |
x-- |
변수를 사용한 후에 변수 값을 1 감소시키는 연산자 |
#include <stdio.h>
void main() {
int x = 3, y = 3;
printf("%d \n", x++); // 3
printf("%d \n", x); // 4
printf("%d \n", ++y); // 4
printf("%d \n", y); // 4
#include <stdio.h>
void main() {
int x = 3, y = 3;
switch(x++) {
case 3: printf("A: %d \n", x); break; // A: 4
case 4: printf("B: %d \n", x);
}
switch(++y) {
case 3: printf("C: %d \n", y); break;
case 4: printf("D: %d \n", y); // D: 4
}
}
산술 연산자
: +, -와 같이 가장 일반적으로 사용되는 연산자
+ |
양쪽의 값을 더하는 연산자, 문자열일 경우, 연결 |
- |
왼쪽 값에서 오른쪽 값을 빼는 연산자 |
* |
두 개의 값을 곱하는 연산자 |
/ |
왼쪽 값을 오른쪽 값으로 나누는 연산자 |
% |
왼쪽 값을 오른쪽 값으로 나눈 나머지를 계산하는 연산자 |
<< |
왼쪽 값에서 오른쪽 값만큼 비트를 왼쪽으로 이동하는 연산자 |
>> |
왼쪽 값에 오른쪽 값만큼의 비트를 채우면서 오른쪽으로 이동하는 연산자 |
#include <stdio.h>
void main() {
printf("%d \n", 3 << 2); // 12
printf("%d \n", 8 >> 3); // 1
관계 연산자
: 두 피연산자 사이의 크기를 비교하는 연산자
> |
왼쪽에 있는 값이 오른쪽에 있는 값보다 크면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자 |
>= |
왼쪽에 있는 값이 오른쪽에 있는 값보다 크거나 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자 |
== |
왼쪽에 있는 값이 오른쪽에 있는 값과 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자 |
!= |
왼쪽에 있는 값이 오른쪽에 있는 값과 다르면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자 |
#include <stdio.h>
void main() {
printf("%d \n", 3==3); // 1
printf("%d \n", 5==3); // 0
class Soojebi {
public static void main(String[] args) {
System.out.println(3==3); // true
System.out.println(5==3); // false
}
}
비트 연산자
: 0과 1의 각 자리에 대한 연산을 수행하는 연산자
& |
두 값을 비트로 연산하여 같은 비트의 값이 모두 1이면 해당 비트 값이 1이 되고, 그렇지 않으면 0이 되는 연산자 |
ㅣ |
두 값을 비트로 연산하여 같은 비트의 값이 하나라도 1이면 해당 비트 값이 1이 되고, 그렇지 않으면 0이 되는 연산자 |
^ |
두 값을 비트로 연산하여 같은 비트이 값이 서로 다르면 해당 비트 값이 1이 되고, 그렇지 않으면 0이 되는 연산자 |
~ |
모든 비트 값을 반대로 바꾸는 반전 기능을 하는 연산자 |
#include <stdio.h>
void main() {
printf("%d \n", 13 & 10); // 13 => 1101(2), 10 => 1010(2), & 연산하면 1000(2) = 8
printf("%d \n", 13 | 10); // | 연산하면 1111(2) = 15
printf("%d \n", 13 ^ 10); // ^ 연산하면 111(2) = 7
printf("%d \n", ~13); // 13에 -부호 붙이고, -1 연산하면 = -14
}
- 논리 연산자 : 두 피연산자 사이의 논리적인 관계를 정의하는 연산자
&& |
두 개의 논리값이 모두 참이면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자 |
ㅣㅣ |
두 개의 논리값 중 하나가 참이면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자 |
#include <stdio.h>
void main() {
printf("%d %d \n", 1 && 1, 1 || 1); // 1, 1
printf("%d %d \n", 1 && 0, 1 || 0); // 0, 1
printf("%d %d \n", 0 && 1, 0 || 1); // 0, 1
printf("%d %d \n", 0 && 0, 0 || 0); // 0, 0
#include <stdio.h>
void main() {
int x = 1;
int y = 2;
int max;
max = x > y ? x : y;
printf("%d", max); // 2
int i = 7, j = 9;
int k;
if(i > j)
k = i - j;
else
k = i + j;
// k = (i > j) ? (i - j) : (i + j);
- 대입 연산자 : 변수에 값을 대입할 때 사용하는 연산자, 오른쪽에 있는 값을 이용해 왼쪽의 변수 값을 대입
= |
왼쪽의 변수에 오른쪽 값을 대입하는 연산자 |
+= |
왼쪽의 변수에 오른쪽 값을 더한 후, 그 결과값을 왼쪽의 변수에 대입하는 연산자 |
%= |
왼쪽의 변수에 오른쪽 값을 나눈 후, 그 나머지를 왼쪽의 변수에 대입하는 연산자 |
, |
동시에 여러 개의 값을 대입하는 연산자(파이썬만 지원) |
a, b = 10, 20
print(a) // 10
print(b) // 20
a,b = b, a
print(a) // 20
print(b) // 10
#include <stdio.h>
int main() {
int a = 3, b = 4, c = 2;
int r1, r2, r3;
r1 = b <= 4 || c == 2; // 1
r2 = (a > 0) && (b < 5); // 1
r3 = !c; // 0
printf("%d", r1 + r2 + r3); // 1+1+0 = 2
return 0;
}
public class Soojebi2 {
public static void main(String[] args) {
int a = 3, b = 4, c = 3, d = 5;
if(a == 2 | a == c) & !(c > d) & ( 1 == b ^ c != d)) { // 1(true)
a = b + c; // a = 7, b = 4, c = 3, d = 5
if(7 == b ^ c != a) { // 1(true)
System.out.println(a); // 7
}
else {
System.out.println(b);
}
else {
a = c + d;
if( 7== c ^ d != a) {
System.out.println(a);
}
else {
System.out.println(d);
}
}
}
}