루아에서는 부울형(bool type) 데이터로 true/false 가 있으며 각각 참과 거짓을 표현한다.
a = true -- 변수 a에 ‘참’을 대입x = false -- 변수 b에 ‘거짓’을 대입 |
true/false 는 보통 조건식의 결과이다. 조건식에 쓰이는 연산자(조건 연산자)는 다음과 같은 것들이 있다.
조건연산자 | 의미 |
x == y x ~= y |
x와 y가 같으면 true 반환 x와 y가 다르면 true 반환 (주의) |
x > y x >= y |
x보다 y가 크면 true 반환 x보다 y가 크거나 같으면 true 반환 |
x < y x <= y |
x보다 y가 작으면 true 반환 x보다 y가 작거나 같으면 true 반환 |
같다 다르다는 ‘==’과 ‘~=’ 이다. ‘다르다’의 경우 다른 언어에서 많이 쓰이는 ‘!=’과는 문법이 다르니 유의해야 한다.
print (1==1)a = 2 ~= 2b = 3c = b == 3 -- 변수 c에는 부울값이 저장된다.print(a, c)d = 4print(b<d) |
실행 결과 |
truefalse truetrue |
정수형의 상등/대소 조건 판별은 아무런 오류가 발생하지 않으나 실수의 경우는 그렇지 않다.(루아도 C/C++ 에서의 실수 비교와 같은 문제를 가지고 있다.)
print (0.3 == 0.1*3)a = 0.2 + 0.2 + 0.2b = 0.6print (a, b, a==b) |
실행 결과 |
false0.6 0.6 false |
이 예에서 보면 0.1*3 과 0.3은 다르다고 판별되고 0.2를 세 번 더한 것과 0.6이 다르다고 출력된다. 이진수에 대한 지식이 있다면 0.1이나 0.2는 정확하게 이진수로 표현될 수 없으므로 내부적으로 (약간) 부정확한 수가 저장되며 이러한 값들의 연산과 비교 역시 부정확하게 된다는 사실을 알 수 있다. 이 사실은 >=, <= 비교 연산에 대해서도 동일하게 적용된다.
a = 0.2 + 0.2 + 0.2b = 0.6print (a, b, a<=b) |
실행 결과 |
0.6 0.6 false |
따라서 실수값 사이의 같다/다르다 판별은 가급적 하지 않는 것이 좋으며 부득이할 경우에는 충분히 주의를 해야 예기치 않은 논리적 오류를 막을 수 있다.
루아(Lua) 전체 강좌 목록 >>> | c{lua},n{lua005} |
'프로그래밍언어.Lib > 루아(Lua)' 카테고리의 다른 글
루아(Lua)의 nil (0) | 2016.01.26 |
---|---|
루아(Lua)의 문자열 (0) | 2016.01.26 |
루아의 산술 연산자 (0) | 2016.01.25 |
루아(Lua)의 숫자형 (0) | 2016.01.25 |
루아(Lua)의 식별자 만드는 규칙 (0) | 2016.01.25 |