====== 수식과 연산자 ====== 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 목차로 돌아가기]]