본문으로 건너뛰기

연산자

우선순위가 높은 것부터 나열합니다. 모든 이항 연산자는 왼쪽 결합입니다: a - b - c는 (a - b) - c입니다.

수준연산자의미피연산자 형식
1( ) f(…)그룹화, 기본 제공 함수 호출
2! - ~(단항)논리 부정, 부호 반전, 비트 부정!: 모든 형식 · -: Integer/Real · ~: Integer
3* /곱하기, 나누기Integer/Real
4+ -더하기 또는 연결, 빼기Integer/Real 또는 Text + Text
5<< >>왼쪽 시프트, 산술 오른쪽 시프트Integer
6< <= > >=순서 비교두 숫자 또는 두 Text
7== !=같음 비교모든 형식
8&비트 ANDInteger
9^비트 XORInteger
10|비트 ORInteger
11&&논리 AND(양쪽이 항상 평가됨)모든 형식(참/거짓 판정)
12||논리 OR(양쪽이 항상 평가됨)모든 형식(참/거짓 판정)

나머지(%), 거듭제곱 연산자, 삼항 연산자(?:), 쉼표 연산자는 없습니다.

경고

&&와 ||는 단락 평가를 하지 않습니다. 두 피연산자는 항상 왼쪽, 오른쪽 순서로 모두 평가됩니다. 왼쪽이 이미 결과를 결정했더라도 오른쪽의 기본 제공 함수 호출은 실행되며, 그 호출이 실패하면 작업이 중지됩니다. 대신 중첩된 if로 보호하십시오.

text = ClipboardGetText();
idx = StringGetIndexOf(text, ":");

// 잘못됨: idx가 -1이어도 StringGetSubstring(text, -1, 5)가 실행되어 작업이 중지됩니다
// if (idx >= 0 && StringGetSubstring(text, idx, 5) == ":here") { ... }

// 올바름: 두 번째 검사는 첫 번째 검사가 참일 때만 실행됩니다
if (idx >= 0) {
if (StringGetSubstring(text, idx, 5) == ":here") UtilityPrint("found");
}
경고

비트 연산자는 비교 연산자보다 우선순위가 낮습니다(C와 같음). flags & 4 == 4는 flags & (4 == 4), 즉 flags & true로 해석되어 0이 됩니다. 마스크는 항상 괄호로 감싸십시오: (flags & 4) == 4 또는 (flags & 4) != 0.

경고

비교는 연쇄되지 않습니다. 0 < x < 10은 (0 < x) < 10으로 해석되어 Bool과 Integer를 비교하므로 항상 false입니다. x > 0 && x < 10으로 작성하십시오.