【问题标题】:How can I write a program to find maximum value of integer variable如何编写程序来查找整数变量的最大值
【发布时间】:2016-10-19 09:48:40
【问题描述】:

在 C 中,我如何编写程序来找到整数变量的最大值? 据我所知,整数变量的最大值是 2147483647,但是如何在 C 程序中表示呢?

【问题讨论】:

    标签: c variables int max


    【解决方案1】:

    据我所知,整数变量的最大值是 2147483647

    这是一个错误的假设。 int 的最大值可能因系统而异。例如,在 16 位机器上,int 的最大值不是 2147483647。

    您不需要自己找到它。您可以从<limits.h> 使用预定义的宏。例如,INT_MAX 表示 int 可以容纳的最大值。

    【讨论】:

      【解决方案2】:

      您无法通过计算以编程方式找到此值。无法检测到您“在最后”,并且递增最大整数具有未定义的行为。

      这就是标准库在<limits.h> 标头中向您提供整数类型的最大值和最小值的原因有责任确保操作结果符合所需的类型。

      【讨论】:

      • 好吧,这是一个家庭作业,但我无法理解家庭作业,但答案非常解释,谢谢。
      • @Kerrek 您可以通过编程方式找到这些。返回的值应该特定于使用的环境和编译器。请参阅下面的示例。
      • @PeterH:嗯,这也是我的回答。我想你是否认为“发现”是吹毛求疵。我在“计算”的意义上使用“查找”,而不是“查找”。改写了一下。
      • @KerrekSb 查看这篇计算 int 最大值的帖子,您可能会感兴趣stackoverflow.com/questions/31897880/…
      • @LauroSkr:你是指问题还是接受的答案?问题中的代码有 UB,而答案基本上只是 断言 值,对吧?我不妨直接说0x7FFFFFFF 并宣布这是答案。这不是真正的计算。你怎么知道这是最大值?
      【解决方案3】:

      最大值和最小值在限制中定义。 您可以使用以下代码验证这些。

      C版:

      #include <stdio.h>
      #include <limits.h>
      
      
      int main()
      {
          printf("Minimum Int value:%d\n", INT_MIN);
          printf("Minimum Int value:%d\n", INT_MAX);
          return 0;
      }
      

      在 C++ 中

      #include "stdafx.h"
      #include <iostream>
      #include <limits>
      using namespace std;
      
      int _tmain(int argc, _TCHAR* argv[])
      {
          cout << "Minimum Int value:" << INT_MIN << endl;
          cout << "Maximum Int value:" << INT_MAX << endl;
          return 0;
      }
      

      另一种(非 Visual Studio 版本如下):

      #include <iostream>
      #include <string>
      #include <limits.h>
      using namespace std;
      int main()
      {
          std::cout << "Minimum Int value:" << INT_MIN << endl;
          std::cout << "Maximum Int value:" << INT_MAX << endl;
      }
      

      如果您对其他数据类型的最大值和最小值感兴趣,可以在下面的网站中找到常量名称 E.G INT_MIN 和 INT_MAX。
      http://www.cplusplus.com/reference/climits/

      【讨论】:

      • 该问题未使用 C++ 标记。
      • @2501 .. 好点。提供C版
      【解决方案4】:

      我知道已经晚了,但是如果必须将计算作为赋值,可以使用sizeof() 运算符,这将给出一个整数包含的字节数。

      2^((number of bytes*8) - 1) 应该给出一个整数的最大值。

      当然sizeof()也是编译时间,就像INT_MAX一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-05
        • 2010-12-26
        • 1970-01-01
        • 2012-08-09
        • 1970-01-01
        相关资源
        最近更新 更多