문제

    > (eq? 1 1)
    #t
    > (eq? 1.1 1.1)
    #f
    > (= 1.1 1.1)
    #t

이것은 drscheme의 상호 작용 창입니다. 누군가가 =와 EQ의 차이점을 설명해 주시겠습니까? 계획에?

도움이 되었습니까?

해결책

= 숫자를 비교합니다. 식? 테스트 매개 변수가 메모리에서 동일한 데이터 객체를 나타내는 경우. EQV? 두 번째 경우에 EQ와 동일한 테스트하므로 작동해야합니까? 그러나 프리미티브를 특별히 테스트합니다. EQULIVENCE에 대한 자세한 내용은 여기서 계획에서 전제됩니다.

다른 팁

나는 그 이후로 그것을 추측 할 것이다

식? 매개 변수가 메모리에서 동일한 데이터 객체를 나타내지 않는 한 #F로 평가합니다.

그리고

체계는 정확한 숫자 (1.1)를 정확한 숫자와 다르게 저장합니다 (1)

두 개의 1.1 인수는 메모리의 동일한 장소에 상주하지 않고 Eq의 경우 #F를 반환하지 않습니까?

위키 백과 참조

식? 숫자는 예측할 수 없습니다. 동일한 숫자가 메모리의 동일한 위치에 있도록 숫자 리터럴이 삽입되는지 여부는 구현에 달려 있습니다. 예를 들어, 라켓 언어는 최근에 읽는 동안 그러한 리터럴 인턴을 선택했습니다. http://www.mail-archive.com/dev@racket-lang.org/msg04893.html

언어 구현의 런타임이 각 숫자를 고유하게 나타내는 지 여부는 확실하지 않습니다. 이것은 부유물과 bignums와 같이 박스형 값에 영향을 줄 수 있습니다. 그것이 이유입니다 = 숫자에 대한 술어로 존재합니다. 얕은 포인터 평등보다는 내용의 평등성을 확인합니다.

이것은 체계와 같은 언어에만 전적형이 아닙니다 : 평등 대 평등은 Python에서 발생합니다 (~이다 vs. ==) 예를 들어.

첫 번째 차이점 : eq? 모든 값으로 작동합니다 = 모든 숫자와 함께 작동합니다.

다른 몇 가지가 있습니다 동등성이 사전. 그들 대부분은 정확히 두 개의 매개 변수 만 받아들입니다. = 에 정의됩니다 '숫자'장

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top