:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
09/10/15 00:12
대입연산자라면 결과값이 true false 형태로 나올 수가 없지않나요?
저부분이 나오는게 Boolean type 에서 나오는건데요.... =, == 두개다 비교연산자 인듯한데 이해가 안가네요.
09/10/15 01:00
랭귀지와 컴파일러 따라 다르긴하지만 c언에서는 대입에 관해서도 리턴값이 존재합니다.
저 언어에서는 연산의 성공여부를 나타내는 걸 리턴값으로 돌려주는거 같은데요;; 첫번째 코드와 두번째가다른건.. 첫번째는 단순 변수 두번째는 배열 같네요. 물론 저 언어를 몰라서 추측일뿐입니다;;
09/10/15 01:10
=는 구조적 동등을 비교하고 ==는 주소적 동등을 비교한다는 내용같네요.
아래쪽이 리스트인지 배열인지는 모르겠지만 독립적인 저장공간을 갖고 각각 저장되고 위쪽은 값이 같으면 하나의 주소공간에 같이 저장되나 보네요. 저 역시 모르는 언어이기 때문에 여기까지밖에 답변 못드립니다.
09/10/15 01:22
저도 처음 보는 언어라 검색을 좀 해보니 약간의 정보가 나오긴 하는데...
일어라 번역기를 돌려봤습니다만 약간 해석이 애매한 부분이 있네요. ( http://jijixi.azito.com/cgi-bin/diary/index.rb?date=19700102 ) 제가 이해하기로는 그렇습니다. =은 값을 비교 ==은 주소를 비교 여기까지는 거의 확실합니다만... int값의 경우에는 상수라서 같은 값의 경우 같은 주소를 가지기 때문에 ==이 true값을 가지는 것으로 추측됩니다. 근데, 수업시간에 들으신 거면 같이 수업 들으신 다른 분들께 물어보시는 게 더 확실하지 않을까 싶네요...
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 라는군요.
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로 취급된다고 합니다. 늦게까지 친절하게 답변해주신것 감사합니다.
09/10/15 13:51
OCaml 좋죠. 언어 자체에서 Segmentation fault가 절대로 발생하지 않음을 보장해 주는 특성 덕분에 프로그래머가 편합니다.
|