# 사용 가능한 연산자 및 함수

데이터, 연산자, 수학 함수, 데이터 형식 변환을 사용하여 식을 만듭니다.

### 연산자

#### 정수 연산자

간단한 산술 연산을 수행하려면 다음 연산자를 사용합니다. 이를 사용하여 "TankLevel + 60" 같은 숫자 값을 계산합니다.

연산자 | 표현식 | 설명
[+] | X + Y | 더하기
[-] | X - Y | 빼기
[*] | X * Y | 곱하기
[/] | X / Y | 나누기
[%] | X % Y | 나누기의 나머지
[()] | (X + Y)*10 |

문자열 연결을 수행하려면 더하기 연산자 (+) 를 사용합니다. 즉, 더하기 기호를 사용하여 문자열을 연결할 수 있습니다. "Hello " + " " + "Billy" 는 문자열 Hello Billy를 생성합니다.

#### 비트 연산자

연산자 | 표현식 | 설명
[>>] | X >> Y | 오른쪽 시프트. X의 비트를 오른쪽으로 Y 비트 수만큼 위치를 옮깁니다. 부호를 유지합니다.
[<<] | X << Y | 왼쪽 시프트. X의 비트를 왼쪽으로 Y 비트 수만큼 위치를 옮깁니다. 부호를 유지합니다.
[>>>] | X >>> Y | 0으로 채우기, 오른쪽 시프트. X의 비트를 오른쪽으로 Y 비트 수만큼 위치를 옮기고 왼쪽의 시프트된 비트를 0으로 채웁니다. 따라서 부호를 유지하지 않습니다.
[&] | X & Y | 비트 수준의 AND 연산 결과를 반환합니다. If X = 0110; Y= 1100 then the result is 0100
[|] | X | Y | 비트 수준의 OR 연산 결과를 반환합니다. If X = 0110; Y= 1100 then the result is 1110
[^] | X ^ Y | 비트 수준의 XOR 연산 결과를 반환합니다. If X = 0110; Y= 1100 then the result is 1010
[~] | ~X | X 값의 비트를 반대로 설정합니다. If X = 0110; then the result is 1001
[!] | !X | X가 동일하지 않으면 true를 반환합니다.

메모:

- OR/AND/XOR/NOT 은 항상 32비트 부호 없는 정수값을 반환합니다.
- 입력값이 음수인 경우 비트 시프트 표현식이 32비트 정수값을 반환합니다.
- 입력값이 양수인 경우 비트 시프트 표현식이 32비트 부호 없는 정수값을 반환합니다.

#### BOOL 출력 연산자

이들 연산자는 두 값을 비교합니다. 정의된 비교가 true이면 표현식이 true를 반환합니다. 정의된 비교가 false이면 표현식이 false를 반환합니다. 이를 사용하여 "TankLevel > 30" 같은 숫자 값을 비교합니다.

값에 다음 중 하나가 발생하면 결과가 정의되지 않습니다.

- 통신 오류(변수의 품질이 “나쁨”)
- 범위를 벗어난 배열 요소 번호 액세스하기

- 0으로 나눕니다.

연산자 | 표현식 | 설명
- [&&] | X && Y | 논리적 AND. 메모: 변환기의 BOOL 표현식은 BOOL형 값으로 평가되어야 합니다. 표현식이 다른 데이터 종류로 평가되는 경우 값이 정의되지 않습니다. 피연산자 중 하나의 값이 정의되지 않았더라도 다른 피연산자가 거짓이면 결과적으로 논리적 조건이 거짓으로 평가될 수 있습니다. 아래 표를 참조하십시오.
  왼쪽 연산자 | 오른쪽 연산자 | 결과
  정의되지 않음 | 정의되지 않음 | 정의되지 않음
  정의되지 않음 | true | 정의되지 않음
  정의되지 않음 | false | false
  true | 정의되지 않음 | 정의되지 않음
  false | 정의되지 않음 | false
- [||] | X || Y | 논리적 OR. 메모: 변환기의 BOOL 표현식은 BOOL형 값으로 평가되어야 합니다. 표현식이 다른 데이터 종류로 평가되는 경우 값이 정의되지 않습니다. 피연산자 중 하나의 값이 정의되지 않았더라도 다른 피연산자가 참이면 결과적으로 논리적 조건이 참으로 평가될 수 있습니다. 아래 표를 참조하십시오.
  왼쪽 연산자 | 오른쪽 연산자 | 결과
  정의되지 않음 | 정의되지 않음 | 정의되지 않음
  정의되지 않음 | true | true
  정의되지 않음 | false | 정의되지 않음
  true | 정의되지 않음 | true
  false | 정의되지 않음 | 정의되지 않음
[==] | X == Y | X와 Y가 같으면 true를 반환합니다.
[!=] | X != Y | X와 Y가 같지 않으면 true를 반환합니다.
[<=] | X <= Y | X가 Y보다 작거나 같으면 true를 반환합니다. 메모: 이 연산자는 BOOL 변수, STRING 변수 및 WSTRING 변수에 사용할 수 없습니다.
[>=] | X >= Y | X가 Y보다 크거나 같으면 true를 반환합니다. 메모: 이 연산자는 BOOL 변수, STRING 변수 및 WSTRING 변수에 사용할 수 없습니다.
[<] | X < Y | X가 Y보다 작으면 true를 반환합니다. 메모: 이 연산자는 BOOL 변수, STRING 변수 및 WSTRING 변수에 사용할 수 없습니다.
[>] | X > Y | X가 Y보다 크면 true를 반환합니다. 메모: 이 연산자는 BOOL 변수, STRING 변수 및 WSTRING 변수에 사용할 수 없습니다.

### Math

메소드 | 설명
abs(a) | 절대 값을 반환합니다. 파라미터: integer, return: integer -or- parameter: long, return: long -or- parameter: float, return: float -or- parameter: double, return: double
acos(double a) | 아크코싸인을 반환합니다. 파라미터: double, 반환: double
asin(double a) | 아크싸인을 반환합니다. 파라미터: double, 반환: double
atan(double a) | 아크탄젠트를 반환합니다. 파라미터: double, 반환: double
atan2(double a, double b) | a/b의 아크탄젠트를 반환합니다. 파라미터 a: double, 파라미터 b: double, 반환: double
ceil(double a) | 파라미터보다 큰 정수 중 가장 작은 정수를 반환합니다. 파라미터: double, 반환: double
cos(double a) | 코싸인을 반환합니다. 파라미터: double, 반환: double
E | 자연 로그의 기준 값. 배정밀도 부동 소수점 수. 2.71828182845904523545f 메모: Math.E 구문을 사용합니다.
exp(double a) | 지수 e (예: 2.718...) 를 double 값만큼 거듭제곱하여 반환합니다. 파라미터: double, 반환: double
floor(double a) | 파라미터보다 작은 정수 중 가장 큰 정수를 반환합니다. 파라미터: double, 반환: double
IEEEremainder(double a, double b) | 파라미터 a를 파라미터 b로 나눈 나머지를 반환합니다. 파라미터 a: double, 파라미터 b: double, 반환: double
log(double a) | 파라미터의 자연 로그를 반환합니다. 파라미터: double, 반환: double
max(a,b) | 두 파라미터 중 큰 값을 반환합니다. parameter a: integer, parameter b: integer, return: integer -or- parameter a: long, parameter b: long, return: long -or- parameter a: float, parameter b: float, return: float -or- parameter a: double, parameter b: double, return: double
min(a,b) | 두 파라미터 중 작은 값을 반환합니다. parameter a: integer, parameter b: integer, return: integer -or- parameter a: long, parameter b: long, return: long -or- parameter a: float, parameter b: float, return: float -or- parameter a: double, parameter b: double, return: double
PI | 원의 지름과 원 둘레의 비율. 3.14159265358979323846f 메모: Math.PI 구문을 사용합니다.
pow(double a, double b) | ab를 반환합니다. 파라미터 a: double, 파라미터 b: double, 반환: double
random() | 0.0과 1.0 사이의 무작위 수를 반환합니다. 파라미터: 없음, 반환: double 메모: 이 함수의 출력은 0과 1 사이의 부동 소수점 숫자입니다.
rint(double a) | 파라미터에 가장 가까운 정수를 반환합니다. 파라미터: double, 반환: double
round(a) | double 파라미터에 대해서는 가장 가까운 long을 반환하고 float 파라미터에 대해서는 가장 가까운 정수를 반환합니다. 파라미터: double, return: long -or- 파라미터: float, return: integer
sin(double a) | 파라미터의 싸인을 반환합니다. 파라미터: double, 반환: double
sqrt(double a) | 파라미터의 제곱근을 반환합니다. 파라미터: double, 반환: double
tan(double a) | 파라미터의 탄젠트를 반환합니다. 파라미터: double, 반환: double

### 유형 변환

유형 변환을 사용하여 데이터 유형을 변환합니다. 다음은 LWORD 변수가 SINT 변수로 변환되는 유효한 표현식의 예입니다.

종류 | 설명
(sint) | 반올림 값을 부호가 있는 8비트 정수로 반환합니다.
(usint) | 반올림 값을 부호가 없는 8비트 정수로 반환합니다.
(byte) | 반올림 값을 부호가 없는 8비트 정수로 반환합니다.
(int) | 반올림 값을 부호가 있는 16 비트 정수로 반환합니다.
(uint) | 반올림 값을 부호가 없는 16 비트 정수로 반환합니다.
(word) | 반올림 값을 부호가 없는 16 비트 정수로 반환합니다.
(dint) | 반올림 값을 부호가 있는 32 비트 정수로 반환합니다.