2014-06-18 3 views
5

지금 프로그래밍 언어 (BNFs, 스캐너 등)에 대해 배우고 있으며 C에서 16 진수 부동 소수점 상수에 지수가 필요하다는 것이 이상하게 보입니다. C99 표준에서 16 진수 부동 소수점에 특정 지수가 있어야하는 이유는 무엇입니까?

,

§6.4.4.2 부동 상수

hexadecimal-floating-constant: 
    hexadecimal-prefix hexadecimal-fractional-constant 
     binary-exponent-part floating-suffix[opt] 
    hexadecimal-prefix hexadecimal-digit-sequence 
     binary-exponent-part floating-suffix[opt] 

옵션 지수와 진수 부동 소수점 상수를 구문 분석하는 스캐너를 작성하는 쉬운 것 같다. 왜 C 표준은 십진법 부동 소수점을위한 지수를 선택적으로 만들고 16 진수 부동 소수점을 위해 필요합니까?

답변

7

이이 C99 Rationale에 덮여, 섹션 6.4.4.2는 :

C99의 새로운 기능 : 그것은 더 명확하게 부동 상수의 의미를 표현하기 때문에 C99는 16 진수를 추가합니다. 십진법 표기법의 경우와 같이 이진 지수 부분 인 이 필요합니다. f 접미사가 16 진수로 착각되어 불명료 함을 피할 수 있습니다. 예를 들어

, 1.0ffloat의 상수 부동 소수점 기능이지만, 0x1.0f은 모호 할 것이며, 0x1.0p0f로 기록되어야한다.

동일한 이유 때문에 e이 유효한 16 진수이기 때문에 지수는 e 대신 p이 도입됩니다.

관련 문제