PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2009/10/15 00:01:06
Name 희주
Subject [Ocaml]에서 = 과 ==의 차이를 잘 모르겠어요
지금 시험공부를 하는데 강의노트에 써있는 의미를 이해할수가 없네요.
Structural equality =
Physical equality ==

강의노트에는 이렇게 써있거든요.

let a=2;;
let b=2;;
a=b (결과: true)
a==b(결과: true)

let a=(3,2);;
let b=(3,2);;
a=b;;(결과: true)
a==b;;(결과: false)

이렇게 나오거든요.
이것에 대해서 설명부탁드립니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
WizardMo진종
09/10/15 00:07
수정 아이콘
대입연산자와 비교연산자네요 결과값은 연산의 리턴값이구요
09/10/15 00:12
수정 아이콘
대입연산자라면 결과값이 true false 형태로 나올 수가 없지않나요?
저부분이 나오는게 Boolean type 에서 나오는건데요.... =, == 두개다 비교연산자 인듯한데 이해가 안가네요.
WizardMo진종
09/10/15 01:00
수정 아이콘
랭귀지와 컴파일러 따라 다르긴하지만 c언에서는 대입에 관해서도 리턴값이 존재합니다.
저 언어에서는 연산의 성공여부를 나타내는 걸 리턴값으로 돌려주는거 같은데요;;

첫번째 코드와 두번째가다른건.. 첫번째는 단순 변수 두번째는 배열 같네요.

물론 저 언어를 몰라서 추측일뿐입니다;;
09/10/15 01:10
수정 아이콘
=는 구조적 동등을 비교하고 ==는 주소적 동등을 비교한다는 내용같네요.
아래쪽이 리스트인지 배열인지는 모르겠지만 독립적인 저장공간을 갖고 각각 저장되고 위쪽은 값이 같으면 하나의 주소공간에 같이 저장되나 보네요.
저 역시 모르는 언어이기 때문에 여기까지밖에 답변 못드립니다.
09/10/15 01:17
수정 아이콘
푸른고니님 설명이 맞는것 같네요. 단일 데이터 타입은 그냥 값을 쓰고 구조적 데이터 타입은 주소를 적는듯...
큐리스
09/10/15 01:22
수정 아이콘
저도 처음 보는 언어라 검색을 좀 해보니 약간의 정보가 나오긴 하는데...
일어라 번역기를 돌려봤습니다만 약간 해석이 애매한 부분이 있네요.
( http://jijixi.azito.com/cgi-bin/diary/index.rb?date=19700102 )
제가 이해하기로는 그렇습니다.
=은 값을 비교
==은 주소를 비교
여기까지는 거의 확실합니다만...
int값의 경우에는 상수라서 같은 값의 경우 같은 주소를 가지기 때문에 ==이 true값을 가지는 것으로 추측됩니다.

근데, 수업시간에 들으신 거면 같이 수업 들으신 다른 분들께 물어보시는 게 더 확실하지 않을까 싶네요...
WizardMo진종
09/10/15 01:23
수정 아이콘
근데 무슨언어인가요? 완전 처음보는건데;;;
09/10/15 01:24
수정 아이콘
답변 감사합니다. 언어는 OCaml 이라는 함수형 언어구요,
어느정도 이해는 갔습니다.

그런데 이런경우도 true false로 갈립니다.
a=b=3.0일때
a=b는 true
a==b는 false
ㅠ.ㅠ 왜이럴까요?

실제로
3.0=3.0은 true
3.0==3.0은 false가 나옵니다. 여기서 3.0은 float형을 의미합니다.
큐리스
09/10/15 01:25
수정 아이콘
쓰고 보니 답변이 좀 중복되는 것 같기도 하지만...
나름 열심히 쓴 거라 그냥 두겠습니다.
ocaml이란... 검색해본 결과
http://en.wikipedia.org/wiki/Objective_Caml
라는군요.
WizardMo진종
09/10/15 01:27
수정 아이콘
3.0=3.0 은 당연히 상수 두개를 비교하니 같을수밖에 없죠.
3.0 이라고 사용하는순간 상수로서 메모리에 존재하게 됩니다.
다른곳에 존재하겠지만요. 값은 같아도 주소는 다르죠

a=b=3.0은
a=3.0
b=3.0이구요

값이 같고 메모리 틀릴겁니다.

여기까진 전부 추측이지만 거~의 비스무리할꺼 같은데요
큐리스
09/10/15 01:27
수정 아이콘
제가 위에 적은 일어 페이지에 보면...
int의 경우에만 다르다는 식으로 써 있습니다.
왜 int만 그런지는 저도 모르겠네요...
ocaml에서 int만 특별취급하는 게 아닐까 하는 추측 뿐...
09/10/15 01:30
수정 아이콘
아마 int는 데이터 사이즈가 작은데 소수는 부동소수점 방식이 아니거나 데이터 사이즈가 크기 때문이 아닐지
혹시 char형도 int랑 같을지 궁금하네요.
09/10/15 01:36
수정 아이콘
아아 답변 감사합니다. 평소 강의자료만 보고 원서(원서라고해도 pdf파일 올려주신거)는 안봤는데 원서 뒤져보니까 나오네요.
==은 답변주신대로 메모리에 저장되는 주소값을 비교하는 거네요.

그리고 float랑 char형은 structured value로 취급된다고 합니다.

늦게까지 친절하게 답변해주신것 감사합니다.
azurespace
09/10/15 13:51
수정 아이콘
OCaml 좋죠. 언어 자체에서 Segmentation fault가 절대로 발생하지 않음을 보장해 주는 특성 덕분에 프로그래머가 편합니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
65800 스타 배울만한 사이트좀 추천해주세요 [3] 모모홍차1531 09/10/15 1531
65799 조언좀 해주세요.. [53] 삭제됨2515 09/10/15 2515
65798 안녕하세요? 소액 적금에 대해 질문 드리고싶습니다. [2] dexia_하늘을날1584 09/10/15 1584
65797 SK 팬분들께 질문 드립니다. Zakk Wylde1865 09/10/15 1865
65796 전환신규에 대해서... [1] firstwheel2091 09/10/15 2091
65795 윈도우에서 자동완성 없애는 법 좀 알려주세요~ [6] FmaMia1877 09/10/15 1877
65794 [Ocaml]에서 = 과 ==의 차이를 잘 모르겠어요 [15] 희주3211 09/10/15 3211
65792 진법,그림가격 [3] 부엉이1690 09/10/14 1690
65791 떨어지는 사람을 받아내는 게 가능할까요? [11] 어진나라2141 09/10/14 2141
65790 다음 조건을 만족하는 여자 아이돌 그룹은 어디인가요? [14] Mutalism2087 09/10/14 2087
65789 현 고2 겨울방학 기숙학원 생각중입니다. [8] Genius1856 09/10/14 1856
65788 자기소개서에 쓸 영작문 확인 부탁드립니다..; [6] Paloalto1697 09/10/14 1697
65787 일본역사에 관해 여쭙고 싶습니다. [5] 起秀1664 09/10/14 1664
65785 방을 만들어도 아무도 못 들어옵니다. [4] ArcanumToss2107 09/10/14 2107
65784 수리영역 공부방법에 관해 질문 드립니다 [7] 체게바라1651 09/10/14 1651
65783 운동할때 갈증이 너무 심해요 [3] 용호동갈매기1776 09/10/14 1776
65782 재무관리론 화폐의 시간가치 문제입니다...능력자님들 도와주세요^^ [5] 토레스2348 09/10/14 2348
65781 에어목배게 질문입니다. [1] 문앞의늑대1612 09/10/14 1612
65780 dvd 드라이브가 인식이 안되는데 어찌 해야 하나요 habsburg2156 09/10/14 2156
65777 엑셀에 관해 질문드립니다. [5] 거칠부1674 09/10/14 1674
65775 저그상대로의 각종 날빌 뭐가 있을까요? [9] 꿈꾸는리토1542 09/10/14 1542
65774 지구 공전 속도에 관해서 질문합니다! [5] 프로캐럿2150 09/10/14 2150
65773 쌀과 찹쌀의 차이는 뭔가요? [7] 김민규12317 09/10/14 12317
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로