c語言整型與浮點型資料訪問的範圍

2021-09-18 02:05:09 字數 1823 閱讀 2435

整型資料:

1.long int 的由來

在win32及現在現在系統中,長度為4;在歷史上,或者其他某些系統中,int長度為2,是short int。

所以: short<=int<=long

測試型別資料的位元組數函式:sizeof(型別名稱)

printf("%d",sizeof(int));
這裡列舉在win64下的型別位元組數及取值範圍

型別名稱

位元組數取值範圍

short (short int)

2(-2 ^15)~ (2^15-1)-32768~+32767

unsigned short

20~65535

int4

(-2 ^31)~ (2^31-1)-2147483648~ +2147483647

unsigned int

40~4294967295

long (long int)

4(-2 ^31)~ (2^31-1) -2147483648~+2141483647

unsigned long

40~4294967295

long long (long long long int)

8(-2 ^63)~ (2^63-1)-9223372036854775808~+9223372036854775807

unsigned long long

80~18446744073709551615

浮點型資料:

取值範圍(看指數部分):

float的指數部分有 8bit (2^8),由於是有符號型,所以得到對應的指數範圍-128~128。

取值範圍為:

(-2 ^128)~ (2^128),約等於-3.4e38 ~ +3.4e38 ;

double的指數部分有 11bit(2^11) , 對應的指數範圍-1024~1024。

取值範圍為:

(-2 ^1024)~ (2^1024),約 等於-1.797e308 ~ +1.797e308;

精度( 有效數字)(主要看尾數字):

float的尾數字是23bit,對應7~8位十進位制數,所以有效數字有的編譯器是7位,也有的是8位;

double的尾數字是52bit,對應15~16位十進位制數,有效數字位15位或16位。

型別名稱

指數字尾數字

取值範圍

有效數字

float823

(-2 ^128)~ (2^128) 約等於-3.4e38 ~ +3.4e38

7 或 8位

double

1152

(-2 ^1024)~ (2^1024) 約等於-1.797e308 ~ +1.797e308

15 或 16位

double的訪問的錯誤認知

double型別可以存307位(實際是308,但存的最大的最高位為1,所以基本預設這裡就講307),

但當用.f 輸出double時, 它的精度在前16位,他只能保證前16位的精度,後面的就無法保證,因為一旦超過精度範圍,就不能精確的描述該資料,不同的處理器對不能精確描述的部分的處理機制可能是不同的,這也就導致了在不同的平台上為什麼一套**的執行結果會不一致

注意:

printf()用%f輸出double型,而scanf卻用%lf

嚴格地講,%lf在printf下是未定義的,但是很多系統可能會接受它。

要確保可移植性,就要堅持使用%f

C語言基礎 整型 字元型和浮點型

1.整型資料型別 c定義了5種整型資料型別。整型資料型別表 序號型別名稱 說明位元組數 取值範圍 1signed char 有符號的單位元組整數型別 1 128 127 2short int 短整型2 32768 32767 3int整型4 2147438648 2147438647 4long i...

C語言整型,浮點型資料儲存的超詳細講解

我們都知道c語言有很多資料型別,如char int double 等等,本篇部落格我們來梳理分類一下這些資料型別,首先我們可以將資料型別分為兩類,整型和浮點型 也就是實型 兩大類,有些讀者可能就會疑惑了,char不是字元型別嗎?怎麼沒列出來呢,別著急先繼續往下閱讀,下面會給出解釋。整型包含 char...

C語言資料儲存 浮點型

浮點數的儲存 ieee 745 乙個例項 關於e的一些注意點 1 float 3.4e 38 3.4e38 2 double 1.7e 308 1.7e308 3 long double 3.4e 4932 1.1e4932 我們以9.5為例,首先將乙個浮點型資料轉化為2進製形式,同時分為整數部分和...