2011-01-24 5 views
3
#include <stdio.h> 
#include <limits.h> 

int main(void){ 
     printf("Type    Size  Min     Max\n----------------------------------------------------------------------\n"); 
     printf("%-20s%-10d%-20ld%-20ld\n", "long", sizeof(long), LONG_MIN, LONG_MAX); 
     printf("%-20s%-10d%-20lu%-20lu\n", "unsigned long", sizeof(long), 0, ULONG_MAX); 
     return 0; 
} 

여기서, double? 변수 LONG_MIN은 파일 limits.h에 있습니다. 어떤 타입의 double?부동 소수점 형식의 제한 사항은 무엇입니까?

int i, min, max; 

    for (i = 1.0; i > 0; ++i) 
    { 
     max = i; 
    }; 
    min = i; 
    printf ("int: min: %d max: %d \n", min, max); 

플로트 및 더블은 어떻게합니까? 이 변수의 최소 계산 방법은 무엇입니까? 죄송합니다 나쁜 영어

+1

http://en.wikipedia.org/wiki/Printf#Format_placeholders에서 유효한 printf 형식 코드를 찾을 수 있습니다. –

+2

그는 'DBL_MIN'과 'DBL_MAX'를 어디에서 찾을 수 있는지 묻습니다. 실제로 좋은 질문입니다. – Thomas

+1

여러 개의 수정 사항이 있어도 - ** thx Juliet 및 기타 ** -이 게시물은 분명하지 않습니다! – TridenT

답변

8

리눅스에서 float.h에는 최대 float 및 double 값에 대해 각각 FLT_MAX 및 DBL_MAX가 정의되어 있습니다. 나는

+0

[Wikipedia] (http://en.wikipedia.org/wiki/Float.h)를 신뢰할 수 있다면 충분히 표준화 할 수 있습니다.그러나주의하십시오 :'DBL_MIN'은'INT_MIN'과 같은 방식으로 작동하지 않습니다. – Thomas

+1

이것은 완전히 표준입니다 (ANSI C89, ISO C90 및 ISO C99 모두) – Clifford

0

나는 이것이 당신이 원하는 생각 :

플로트 : % f를

긴 플로트 (더블) : % LF

또한 지수 표기법에를 볼 수 있습니다 : 플로트 여기에 더블에 대한 분/최대 들어 % E

는 여기

는 float.h에서 조각의 원하는 것입니다 :

#define DBL_MAX 1.7976931348623158e+308 /* max value */ 
#define DBL_MIN 2.2250738585072014e-308 /* min positive value */ 

#define FLT_MAX 3.402823466e+38F /* max value */ 
#define FLT_MIN 1.175494351e-38F /* min positive value */ 
+0

그는 그 타입들에 대해 MIX와 MAX 상수를 찾고 있습니다. – Elalfer

+1

'% f'는'double' 인자를 취합니다. (그러나 'float'이'...'을 통해 전달되면 자동으로'double'으로 승격됩니다.)'% lf'이 (가) 잘못되었습니다. '% Lf'는'long double' 인자로 사용될 수 있습니다. – aschepler

14

부동 소수점 유형에 대한 제한이 없습니다 주어진 데이터 유형에 대한 제한을 계산하기

-1

을 limits.h float.h에 정의되어 있습니다 ... 당신이 비록입니다 방법 "표준"확실하지 않다 단순히 (2^(sizeof(type) * 8)) - 1(2^number_of_bits) - 1을 계산해야합니다.

그런 다음이 유형을 부호있는 분으로 간주하고 최대 값은 -2^(number_of_bits - 1)(2^(number_of_bits - 1)) - 1이거나 서명이없는 경우 MIN은 0이고 최대 값은 (2^number_of_bits) - 1입니다.

이것은 정수 유형에만 적용되므로 float 및 double에 대해서는 적용되지 않으며 2의 보수 정수 표현에 대해서만 적용됩니다.

+2

부동 소수점 유형에 대해서는 작동하지 않습니다 (다소 왜곡 된 방식 임에도 불구하고). 그는 이미 limits.h – Clifford

+0

에 의해 제공된 정수형에 대한 제한을 가지고 있습니다. @Clifford : 실제로 정수에서만 작동 할 것이라고 말했습니다. 어쨌든 나는 limiths.h를 놓쳤다. ;) – BlackBear

+1

당신은 정말로 그렇게 말했습니까, 제 요지는 왜 그런가요? 그것은 질문에 답하지 않습니다. 단순히 간단한 일을 복잡하게 만듭니다. 모든 경우에 CHAR_BIT를 곱하는 것을 기억했다하더라도 수식은 정확하지 않습니다. – Clifford