2**2**5 은 (2**2)**5 와 2**(2**5) 중에 어느 것과 같을까?
즉, 지수 연산자 **는 왼쪽에서 오른쪽으로(left to right) 진행할까?
아니면 오른쪽에서 왼쪽으로(right to left) 진행할까?
만일 2**2**5 == (2**2)**5 라면 그 결과는 2**10 과 같을 것이고,
만일 2**2**5 == 2**(2**5) 라면 그 결과는 2**32 과 같을 것이다.
* 미리 결론을 말하면 Groovy 언어에서는 지수 계산의 순서가 다른 언어(Python. Ruby, Maxima 등)의 것과는 다르다는 것이다.
1. groovy 의 경우
groovysh 로 테스트하였다.
Groovy Shell (1.7.3, JVM: 1.6.0_17)
Type 'help' or '\h' for help.
-------------------------------------------------------------------------------
groovy:000> println(2**5)
32
===> null
groovy:000> println(5**2)
25
===> null
groovy:000> println(2**2**5)
1024
===> null
groovy:000> exit
Type 'help' or '\h' for help.
-------------------------------------------------------------------------------
groovy:000> println(2**5)
32
===> null
groovy:000> println(5**2)
25
===> null
groovy:000> println(2**2**5)
1024
===> null
groovy:000> exit
2. python의 경우
python으로 테스트하였다.
Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print 2**5
32
>>> print 5**2
25
>>> print 2**2**5
4294967296
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print 2**5
32
>>> print 5**2
25
>>> print 2**2**5
4294967296
3. ruby 의 경우
irb로 테스트하였다.
irb(main):001:0> print "%d\n" % (2**5)
32
=> nil
irb(main):002:0> print "%d\n" % (5**2)
25
=> nil
irb(main):003:0> print "%d\n" % (2**2**5)
4294967296
=> nil
irb(main):004:0> exit
32
=> nil
irb(main):002:0> print "%d\n" % (5**2)
25
=> nil
irb(main):003:0> print "%d\n" % (2**2**5)
4294967296
=> nil
irb(main):004:0> exit
4. wxMaxima 의 경우
wxMaxima로 테스트하였다.
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
'프로그래밍 > Groovy' 카테고리의 다른 글
Groovy 언어로 역삼각함수, 역쌍곡선함수 값을 구하는 예제 (0) | 2013.01.02 |
---|---|
Tomcat 6 또는 Tomcat 7에서 Groovlet을 reload할 때 404 에러가 나는 경우 (0) | 2012.11.20 |
숫자 맞추기 게임 with Groovy (0) | 2009.11.05 |
스트링 리스트에서 스트링 찾기(find) with Groovy (0) | 2009.04.22 |
스트링 벡터에서 스트링 찾기(find) with Groovy (0) | 2009.04.22 |