打印双倍范围

时间:2013-03-16 07:35:31

标签: c

我是初学程序员。使用Dev C ++我需要打印范围 doublelong 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;
}

但仍然没有打印范围...

2 个答案:

答案 0 :(得分:3)

有符号整数的范围通常是不对称的 - 通常有一个负值而不是正值。

标头<limits.h>定义您指定的整数类型的范围。

  • ULONG_MAX
  • ULLONG_MAX

标头<float.h>定义浮点类型的范围:

  • DBL_MAX
  • DBL_MIN

您必须使用正确的格式说明符打印值。

答案 1 :(得分: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所建议的,有关缓冲流的更多信息可以帮助您,所以阅读 this SO question可能很有趣