C和Java中变量的最大值

时间:2019-01-17 02:53:26

标签: java c

我在这里遇到一个问题,要求我显示一个变量可以存储的最小值和最大值,包括:Short,Integer,Long和Float。我应该用比正确答案少一的值对其进行初始化,然后再添加1以证明该变量不会产生错误。 例子。

short srtMaximum = 32766;
srtMaximum += 1;
System.out.print(”Max value for short is “ + srtMaximum);

我应该针对C和Java执行此操作。 Java我没问题。     空头是-32768,32767     整数是-2,147,483,648、2,147,483,647     长-9quintillionL,9 quintillionL 漂浮是我不记得的事

但是我对C感到困惑。
短似乎是一样的。 但是Long只能保留与Int相同的值吗? 文档说一个int有时只能是-32768-32767?

我不知道如何使用浮点数执行此项目。不管我给浮点数赋什么值进行测试,它都会在printf中打印出不同的内容

1 个答案:

答案 0 :(得分:1)

您可以使用limits.h来确定系统上最大的整数值。您可以使用float.h找出最大的浮点值。

以下是limits.h的示例:

#include <limits.h>
#include <stdio.h>

int main() {
    printf("INT_MAX: %d\n", INT_MAX);
    printf("UINT_MAX: %u\n", UINT_MAX);
    printf("LONG_MAX: %ld\n", LONG_MAX);
    printf("ULONG_MAX: %lu\n", ULONG_MAX);
}

我不确定您的讲师的意思是“比最大流通量少一个”。比最大浮点小1个是无法表示的。

  

无论我为浮点数赋什么值进行测试,它都会在printf中打印出不同的内容

浮点数不能精确表示所有数字。告诉您是否可以准确表示的方法如下:

  1. 将其转换为分数
  2. 减少分数
  3. 检查分母是否为2的幂。

示例:0.1是否可以精确表示?

  1. 首先,将其转换为分数:1/10
  2. 接下来,减少:1/10
  3. 10不是2的幂。因此,0.1无法精确表示。