2009-08-31 2 views
11

는 ... 내가 (sizeof 연산자 플로트) 같은 결과를 제공하기 위해 둘을 기다리고 있었다를 sizeof 플로트 (3.0)

를 sizeof (3.0)과는 sizeof (3.0F)의 차이 무엇입니까하지만, 그것은 다르다. 32 비트 시스템에서

, GCC 컴파일러 를 sizeof (3.0F) => 4 를 sizeof (3.0) 왜 => 8

?

답변

24

3.0은 두 배이기 때문에. C syntax Floating point types을 참조하십시오.

부동 소수점 상수는 십진수 표기법으로 작성된 일 수 있습니다. 1.23. e 또는 E 뒤에 십진수 지수를 추가하여 과학적 표기법을 사용할 수 있습니다. 1.23e2 ( 값은 123 임). 소수점 또는 지수가 필요합니다 (그렇지 않으면 숫자는 정수입니다). C99에 부동 소수점 상수가 도입되었으므로 비슷한 규칙을 따르며, 앞에 0x가 붙고 p를 사용하여 16 진수 지수를 지정해야합니다. 십진수 진수 부동 소수점 모두 유형 긴 이중 나타내는 에 L 또는 L 의해 에게 float 형의 상수를 나타내는 F 또는 F 접미사 또는 이중 상수 unsuffixed 을 둘 수있다 상수.

+0

및 3.0F에는 부동입니다. – stonemetal

+0

10 진수 및 16 진수 부동 소수점 상수 둘 다 float 유형의 상수를 나타 내기 위해 f 또는 F가 붙을 수 있으며 long 또는 double 유형을 나타내는 l 또는 L 또는 double 상수에 대해 왼쪽 접미어가 붙지 않을 수 있습니다. => 응답이 너무 빠름 : – kumar

10
  • 3.0F 플로트 (4 바이트)
  • 3.0 배 (8 바이트)

more info

6

3.0이 double 아닌 float이다.

doublesfloats의 두 배입니다.

편집 : 3.0d는 C#을

+0

'd'부동 소수점 접미사가 없습니다 ('l'및 'L'은 long double을, 'f'와 'F'는 부동 소수점을, 접미어는 없음). 더블을 준다) – AProgrammer

+0

고정; 감사. – SLaks

+0

IEEE754에서'double'은'float'의 두 배입니다; C는 IEEE754를 요구하지 않습니다. –