0

私は初心者プログラマーです。Dev C++ を使用して、、、、、、、の範囲を出力 する必要doubleがあります。long long intunsigned long long intsigned long long intunsigned intunsigned long int

私はこれまでこれを行ってきました。サイズはすべてビット単位です。

#include <stdio.h>  
#include <conio.h>    
#include <math.h>

int main()
{
    unsigned long int
        d = pow(2, sizeof(double) * 8),
        lli = pow(2, sizeof(long long int) * 8),
        ulli = pow(2, sizeof(unsigned long long int) * 8),
        slli = pow(2, sizeof(signed long long int) * 8),
        ui = pow(2, sizeof(unsigned int) * 8),
        uli = pow(2, sizeof(unsigned long int) * 8);

    printf("double%d to %d", -(d / 2), (d / 2) - 1);
    printf("longlongint%d to %d", -(lli / 2), (lli / 2) - 1);
    printf("unsigned longlongint%d", ulli - 1);
    printf("signed long longint%d to %d", -(slli / 2), (slli / 2) - 1);
    printf("unsigned int%d", ui - 1);
    printf("unsignedlongint%d ", uli - 1);
    getch();

    return 0;
}

それでも範囲を印刷していません...

4

2 に答える 2

3

通常、符号付き整数の範囲は非対称です。通常、正の値より負の値が 1 つ多くなります。

ヘッダー<limits.h>は、指定する整数型の範囲を定義します。

  • ULONG_MAX
  • ULLONG_MAX

ヘッダー<float.h>は、浮動小数点型の範囲を定義します。

  • DBL_MAX
  • DBL_MIN

正しい書式指定子を使用して値を出力する必要があります。

于 2013-03-16T07:54:32.320 に答える
0

"\n"各印刷文に追加してみてください:

printf("double%d to %d\n",-(d/2),(d/2)-1); 
printf("longlongint%d to %d\n",-(lli/2),(lli/2)-1);  
printf("unsigned longlongint%d\n",ulli-1);    
printf("signed long longint%d to %d\n",-(slli/2),(slli/2)-1);    
printf("unsigned int%d\n",ui-1 );   
printf("unsignedlongint%d\n",uli-1);  

アップデート

@Abhineetが示唆したように、バッファリングされたストリーミングに関する詳細情報が役立つ可能性があるため、 このSOの質問を読むことは興味深いかもしれません

于 2013-03-16T07:52:02.033 に答える