0

我是初学者程序员。使用 Dev C++ 我需要打印 double, long long int, unsigned long long int, signed long long int, unsigned int,的范围unsigned 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

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

标头<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 回答