====== 수식과 연산자 ======
CUBLOC2에서는 다양한 데이터 타입을 기반으로 **수식(Expression)**을 구성하여 연산을 수행할 수 있습니다.
수식은 변수, 상수, 연산자, 함수 등을 조합하여 값을 계산하는 구조이며, 결과는 지정된 변수에 저장됩니다.
===== 기본 수식 구조 =====
수식은 다음과 같은 형태로 사용됩니다.
Dim A As Integer
Dim B As Integer
Dim C As Integer
A = 10
B = 20
C = A + B ' 결과: 30
* 수식은 **오른쪽에서 계산된 후 왼쪽 변수에 대입**됩니다.
* 연산에 사용되는 변수의 타입에 따라 결과 타입이 결정됩니다.
-----
===== 산술 연산자 =====
숫자 계산에 사용되는 기본 연산자입니다.
^ 연산자 ^ 설명 ^ 예시 ^ 결과 ^
| + | 덧셈 | 10 + 5 | 15 |
| - | 뺄셈 | 10 - 5 | 5 |
| * | 곱셈 | 10 * 5 | 50 |
| / | 나눗셈 | 10 / 5 | 2 |
| Mod | 나머지 | 10 Mod 3 | 1 |
| %%^%% | 거듭제곱 | 2 %%^%% 3 | 8 |
Dim A As Integer
A = (10 + 5) * 2 ' 결과: 30
Dim B As Double
B = 2 ^ 3 ' 결과: 8
> **주의:**
> * Integer 나눗셈은 결과가 **정수로 처리**됩니다.
> * 거듭제곱(^) 연산은 결과가 실수형으로 처리될 수 있으므로, 필요 시 Double 사용을 권장합니다.
-----
===== 비교 연산자 =====
두 값을 비교하여 **참(True) 또는 거짓(False)** 결과를 반환합니다.
^ 연산자 ^ 설명 ^ 예시 ^
| = | 같다 | A = B |
| <> | 같지 않다 | A <> B |
| > | 크다 | A > B |
| < | 작다 | A < B |
| >= | 크거나 같다 | A >= B |
| <= | 작거나 같다 | A <= B |
If A > 10 Then
Debug "A는 10보다 큼", Cr
End If
-----
===== 논리 연산자 =====
조건을 결합하거나 논리 판단을 수행할 때 사용합니다.
^ 연산자 ^ 설명 ^ 예시 ^
| And | AND (둘 다 참) | A > 0 And B > 0 |
| Or | OR (하나라도 참) | A > 0 Or B > 0 |
| Not | NOT (반전) | Not(A = 0) |
If A > 0 And B > 0 Then
Debug "둘 다 양수", Cr
End If
-----
===== 비트 연산자 =====
비트 단위로 데이터를 처리할 때 사용됩니다. (주로 하드웨어 제어에 활용)
^ 연산자 ^ 설명 ^
| And | 비트 AND |
| Or | 비트 OR |
| Xor | 비트 XOR |
| Not | 비트 반전 |
Dim A As Integer
A = &b1010 And &b1100 ' 결과: &b1000
-----
===== 쉬프트 연산자 =====
비트를 좌우로 이동시킬 때 사용됩니다.
^ 연산자 ^ 설명 ^ 예시 ^ 결과 ^
| << | 왼쪽 쉬프트 | 1 << 3 | 8 |
| >> | 오른쪽 쉬프트 | 8 >> 2 | 2 |
* 왼쪽 쉬프트(<<): 비트를 왼쪽으로 이동하며, 이동한 만큼 **2의 거듭제곱 배 증가**합니다.
* 오른쪽 쉬프트(>>): 비트를 오른쪽으로 이동하며, 이동한 만큼 **2의 거듭제곱으로 나눈 효과**가 있습니다.
Dim A As Integer
A = 1 << 3 ' 결과: 8
A = 16 >> 2 ' 결과: 4
-----
===== 연산자 우선순위 =====
수식 내에서 연산 순서는 다음과 같습니다.
* 괄호 ()
* 단항 연산 (Not 등)
* 거듭제곱 (^)
* 곱셈, 나눗셈 (*, /, Mod)
* 덧셈, 뺄셈 (+, -)
* 쉬프트 연산 (<<, >>)
* 비교 연산 (=, <, > 등)
* 논리 연산 (And, Or)
Dim A As Integer
A = 2 + 3 * 2 ' 결과: 8
A = 2 ^ 3 * 2 ' 결과: 16 (거듭제곱 먼저)
A = (2 + 3) * 2 ' 결과: 10
-----
===== 타입에 따른 연산 주의 =====
* 서로 다른 타입 간 연산 시, 내부적으로 형 변환이 발생합니다.
* 정수(Integer, Long) 연산은 소수점이 버려집니다.
* 실수(Single, Double)를 포함하면 결과는 실수형으로 처리됩니다.
Dim A As Integer
Dim B As Double
A = 10 / 3 ' 결과: 3
B = 10 / 3 ' 결과: 3.3333...
[[..:index|← CUBLOC2 목차로 돌아가기]]