今天隨意翻了翻譚浩強的《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