본문 바로가기
Lua/정리

Lua 정리 ) 논리 연산자, 관계 연산자, 산술 연산자

2022. 1. 7.

and, or, not 보다는 

&&, ||, ! 이 익숙하실겁니다.

어차피 사용법은 같아요. 표현 방법만 다를 뿐입니다.

 

모든 논리연산자는 false와 nil을 false로 판답하고 그 외의 모든 경우를 true로 판단합니다.

0 또한 true입니다.

 

 

 

먼저 and는 and로 묶인 양쪽의 조건식이 모두 참이어야 참을 반환합니다.

a, b, c는 각각 10, 20, 30입니다.

9번째 줄 if의 조건식을 보면

a<b, a<c가 있고 해당 식들 사이에 and가 있습니다.

a는 b보다 작고 "그리고" a는 c보다 작습니다.

그러니 해당 조건이 참이 되는겁니다.

 

not은 해당 조건을 반대로 뒤집습니다.

13번째 줄 a>b는 거짓입니다.

그런데 해당 거짓인 식 앞에 not이 붙어있습니다.

거짓의 반대는 참이니 해당 조건이 참이 됩니다.

Lua에서는 0또한 참이라는것을 잊지 마세요.

 

이제 21번째 식을 보면 or 가 있습니다.

a>b "이거나" a<c. 따라서 참이 됩니다.

 

Lua의 논리 연산자 반환 규칙은 다음과 같습니다.

not 언제나 false나 true를 반환합니다.
and 첫 번째 인자가 nil이나 false가 아니면 첫 번쨰 인자를 반환하고 그렇지 않다면 두번째 인자를 반환합니다.
or 첫 번째 인자가 nil이나 false가 아니면 첫 번째 인자를 반환하고 그 외의 경우에는 두 번째 인자를 반환합니다.

 


Lua의 관계 연산자는 다음과 같습니다.

== 우선 피연산자들의 타입을 비교합니다. 다르면 false입니다.
타입이 같으면 값을 비교합니다. 다르면 false입니다.
~= 다른지 확인.
만약 두 인자가 수치라면 비교부터 합니다.
문자열이라면 현재 로케일 기준에 맞춰서 비교합니다.
그 외에는 >를 <로 바꾸고 <는 >로 바꾸어 연산을 시도합니다.
<, > 크기를 비교합니다. 이하, 이상이 아닙니다!
<=, >= 크기를 비교합니다. 이상, 이하입니다.
+=, -= 등등... Lua에는 없습니다.

Lua는 일반 산술 연산자를 지원합니다.

이항 연산자들은 다음과 같습니다.

+, -, *, /, %, ^

%는 나머지, ^는 제곱을 의미합니다.

 

단항 연산자는 -가 있습니다.

 

연산에는 피연산자로 수치와 문자열 모두를 사용할 수 있습니다.

또한 자동적으로 수치 값으로 변환된 후 연산을 수행합니다.(강제 형변환)

 

강제 형변환 : Lua는 수치 연산에 문자열을 사용하면 문자열을 수치로 변환합니다.

(문자열의 시작과 끝에 공백이나 기호가 들어갈 수 도 있습니다)

반대로 문자열을 사용할 것으로  예상할 수 있는 곳에 수치를 사용한다면 수치를 적절한 형태의 문자열로 변환합니다. 의도적으로 수치를 문자열로 바꿀 때에는 문자열 라이브러리의 format() 함수를 사용하면 됩니다(string.format())

 

지수 연산은 거듭 제곱을 사용합니다.

'x^(-0.5)'는 루트x의 역수가 됩니다.

 

++, -- 는 Lua에서 없습니다. 

 

 

'Lua > 정리' 카테고리의 다른 글

Lua 정리 ) 코루틴  (0) 2022.01.08
Lua 정리 ) 함수  (0) 2022.01.07
Lua 정리) for, if  (0) 2022.01.06
Lua 정리 ) 문법  (0) 2022.01.06
Lua 정리 ) 값과 타입  (0) 2022.01.05

댓글