'부울형'에 해당되는 글 1건

  1. 2016.01.26 루아(Lua)의 부울형과 조건연산자 (1)

 루아에서는 부울형(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 ~= 2
b = 3
c = b == 3 -- 변수 c에는 부울값이 저장된다.
print(a, c)
d = 4
print(b<d)

실행 결과

true
false false
true


정수형의 상등/대소 조건 판별은 아무런 오류가 발생하지 않으나 실수의 경우는 그렇지 않다.(루아도 C/C++ 에서의 실수 비교와 같은 문제를 가지고 있다.)


print (0.3 == 0.1*3)
a = 0.2 + 0.2 + 0.2
b = 0.6
print (a, b, a==b)

실행 결과

false
0.6 0.6 false


이 예에서 보면 0.1*3 과 0.3은 다르다고  판별되고 0.2를 세 번 더한 것과 0.6이 다르다고 출력된다. 이진수에 대한 지식이 있다면 0.1이나 0.2는 정확하게 이진수로 표현될 수 없으므로 내부적으로 (약간) 부정확한 수가 저장되며 이러한 값들의 연산과 비교 역시 부정확하게 된다는 사실을 알 수 있다. 이 사실은 >=, <= 비교 연산에 대해서도 동일하게 적용된다.


a = 0.2 + 0.2 + 0.2
b = 0.6
print (a, b, a<=b)

실행 결과

0.6 0.6 false


따라서 실수값 사이의 같다/다르다 판별은 가급적 하지 않는 것이 좋으며 부득이할 경우에는 충분히 주의를 해야 예기치 않은 논리적 오류를 막을 수 있다.   

 


'프로그래밍언어.Lib > 루아(Lua)' 카테고리의 다른 글

루아(Lua)의 nil  (0) 2016.01.26
루아(Lua)의 문자열  (0) 2016.01.26
루아(Lua)의 부울형과 조건연산자  (1) 2016.01.26
루아의 산술 연산자  (0) 2016.01.25
루아(Lua)의 숫자형  (0) 2016.01.25
루아(Lua)의 식별자 만드는 규칙  (0) 2016.01.25
Posted by 살레시오

댓글을 달아 주세요

  1. 사랑 2020.04.28 14:34  댓글주소  수정/삭제  댓글쓰기

    혹시 c = b==d 는 true 아닌가요?
    잘보고있어요^^ 도움많이돼요