source

음의 부동소수점 0은 C에서 false로 평가되는 것이 보증됩니까?

manysource 2022. 11. 3. 21:56

음의 부동소수점 0은 C에서 false로 평가되는 것이 보증됩니까?

나는 그것을 알고 있습니다.0.0 == -0.0C기준에 따르면if(a)와 동등하다if(a!=0), 그러나:

if(-0.0)로서 평가될 것이 확실하다false기준으로는요?구현에 문제가 있습니까?if(-0.0)사실로 평가되나?

여기서 중요한 건 이 모든 게if(a!=0)의 의미if(-0.0)정확히 같은 것으로 이해되어야 한다!=부동소수점에서의 연산자(false)여야 한다는 보장이 있습니다.

C 2018 6.8.4.1은 다음 명령어의 동작을 지정합니다.if스테이트먼트, 그 스테이트먼트if … else제2단락에는 다음과 같이 기재되어 있다.

두 형식 모두 표현식이 0과 동일하지 않은 경우 첫 번째 서명이 실행됩니다.

C 2018 5.2.4.2.2항 2 및 3항의 부동소수점 모델(여기서는 수학적 타이포그래피를 포함하지 않지만 부동소수점 수치에 +1 또는 -1을 부동소수점 베이스의 스케일링된 제곱과 각각 해당 위치에 맞게 스케일링된 자릿수의 합을 곱하여 정의한다)에 따르면 수학적 값은 -0이다.는 0으로 +0과 같기 때문에 0과 비교됩니다.그러므로if (-0.)는 첫 번째 서브스테이트먼트를 실행하지 않습니다.

언급URL : https://stackoverflow.com/questions/73598674/is-negative-floating-point-zero-guaranteed-to-evaluate-to-false-in-c