VC6.0下計算2147483647

今天隨意翻了翻譚浩強的《C程序設計》第三版,看到數據定義這節內容,int、long、unsigned、signed各個類型的數據長度範圍。隨手寫了一段測試超過2147483647數據的計算,32位機器下的int型範圍:-2147483648~2147483647。代碼如下:

結果爲:-2147483648,輸出sizeof(int)、sizeof(long)都是4個字節。,其輸出結果只能到-2147483648。百度之後,我查了下limits.h裏面對於類型的大小限制。

#if     _INTEGRAL_MAX_BITS >= 32
#define _I32_MIN    (-2147483647i32 - 1) /* minimum signed 32 bit value */
#define _I32_MAX      2147483647i32 /* maximum signed 32 bit value */

#define LONG_MIN    (-2147483647L - 1) /* minimum (signed) long value */
#define LONG_MAX      2147483647L   /* maximum (signed) long value */

 

    printf("%d",_I32_MAX);輸出值也就是上述範圍值。

 

可以用double 來計算超過2147483647的數值,並且輸出格式也必須是%f,變量如果是float,會導致計算出錯。sizeof(float)=4.

#include<stdio.h>
#include<limits.h>
void main()
{
    double a=2147483647;
    double  c=a+2;   
    printf("%f/n",c);
   
}

輸出:2147483649

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章