編譯優化如何推斷變數的值域范圍
① c語言各個數據類型取值范圍
C語言的數據基本類型分為字元型、整型、長整型以及浮點型,取值范圍如下:
c語言中關於變數的取值范圍的計算方法:
1、使用函數的返回值。將函數計算出的變數作為返回值返回給其它函數使用。
2、使用函數的參數。將函數參數設置為引用傳遞而不是值傳遞,就可以把函數計算出的變數通過此參數給其它函數使用。
3、使用全局變數。將函數計算出的值保存到全局變數中,其它函數就可以使用了。
(1)編譯優化如何推斷變數的值域范圍擴展閱讀
C語言運算中的數據類型自動轉換原則
1、隱式轉換
C語言在以下四種情況下會進行隱式轉換:
(1)算術運算式中,低類型能夠轉換為高類型。
(2)賦值表達式中,右邊表達式的值自動隱式轉換為左邊變數的類型,並賦值給它。
(3)函數調用中參數傳遞時,系統隱式地將實參轉換為形參的類型後,賦給形參。
(4)函數有返回值時,系統將隱式地將返回表達式類型轉換為返回值類型,賦值給調用函數。
2、算數運算的隱式轉換
算數運算中,首先有如下類型轉換規則:
(1)字元必須先轉換為整數(C語言規定字元類型數據和整型數據之間可以通用)。
(2)short型轉換為int型(同屬於整型)。
(3)float型數據在運算時一律轉換為雙精度(double)型,以提高運算精度(同屬於實型)。
其次,有下面的規則。
當不同類型的數據進行操作時,應當首先將其轉換成相同的數據類型,然後進行操作,轉換規則是由低級向高級轉換。
② int2 int4 int8 int的值域范圍都是多少怎麼算的
int2 是2位元組 有符號整型, 符號佔1位,餘下15位2進制位表示數值 。最大數正數是 0x7fff
int4 是4位元組 有符號整型 符號佔1位,餘下31位2進制位表示數值 。最大數正數是 0x7fffffff
int8 是8位元組 有符號整型 符號佔1位,餘下63位2進制位表示數值 。
最大數正數是 0x7fffffffffffffff
(16 進制 到 10進制 換算 不需要 我在這里 啰嗦了 吧)
int 等於 int4 或 int8 或 int 2 取決於 編譯器品種,一般用 int4.
詳細的 值域范圍 在頭文件 limits.h 里。
int2 范圍 SHRT_MIN,SHRT_MAX (-32768, +32767)
int4 范圍 LONG_MIN, LONG_MAX (-2147483648 +2147483647)
int8 可能用 LONG_LONG 或 。。。(由 編譯器品種定)
③ C語言的代碼中每一種變數的·取值范圍
-32768到32767是標准規定的int的最小取值范圍,但是32位環境下int的取值一般都是-2147483648到2147483647。另外16位環境下一般short和int的范圍是一樣的。
C語言里整數類型只規定了最小范圍,而具體一個編譯器實現是多大的范圍是不一定的。另外一個例子就是long,16位環境和32微軟的編譯器是32位,gcc和clang是64位。
④ C語言int的取值范圍
C語言int的取值范圍在32/64位系統中都是32位,范圍為-2147483648~+2147483647,無符號情況下表示為0~4294967295。
C/C++編程語言中,int表示整型變數,是一種數據類型,用於定義一個整型變數,在不同編譯環境有不同的大小,不同編譯運行環境大小不同。
C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
基本數據類型:
void:聲明函數無返回值或無參數,聲明無類型指針,顯示丟棄運算結果。(C89標准新增)
char:字元型類型數據,屬於整型數據的一種。(K&R時期引入)
int:整型數據,表示範圍通常為編譯器指定的內存位元組長。(K&R時期引入)
float:單精度浮點型數據,屬於浮點數據的一種。(K&R時期引入)
double:雙精度浮點型數據,屬於浮點數據的一種。(K&R時期引入)
_Bool:布爾型(C99標准新增)
_Complex:復數的基本類型(C99標准新增)
_Imaginary:虛數,與復數基本類型相似,沒有實部的純虛數(C99標准新增)
_Generic:提供重載的介面入口(C11標准新增)
(4)編譯優化如何推斷變數的值域范圍擴展閱讀:
1989年,ANSI發布了第一個完整的C語言標准——ANSI X3.159—1989,簡稱「C89」,不過人們也習慣稱其為「ANSI C」。
C89在1990年被國際標准組織ISO(International Standard Organization)一字不改地採納,ISO官方給予的名稱為:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被簡稱為「C90」。
1999年,在做了一些必要的修正和完善後,ISO發布了新的C語言標准,命名為ISO/IEC 9899:1999,簡稱「C99」。
在2011年12月8日,ISO又正式發布了新的標准,稱為ISO/IEC9899: 2011,簡稱為「C11」。
⑤ 鍏充簬c璇璦涓瀹炲瀷鍙橀噺鐨勮〃紺鴻寖鍥
銆銆c璇璦涓鐨勫疄鍨嬪垎涓哄崟綺懼害嫻鐐規暟鍜屽弻綺懼害嫻鐐規暟銆
銆銆float鍗曠簿搴﹀彇鍊艱寖鍥:1.175494e-038 ~ 3.402823e+038
銆銆double鍙岀簿搴﹀彇鍊艱寖鍥:2.225074e-308 ~ 1.797693e+308
銆銆涓鑸鏉ヨ達紝C璇璦鏍囧噯搴撲腑鐨刦loat.h瀹氫箟浜嗗崟綺懼害鍜屽弻綺懼害嫻鐐規暟鐨勬渶澶у煎拰鏈灝忓礆紝紼嬪簭鍛樺彲浠ュ湪C婧愮爜鏂囦歡涓浣跨敤FLT_MIN銆丗LT_MAX涓や釜瀹忔潵琛ㄧず鍗曠簿搴︽誕鐐規暟鐨勬渶灝忓煎拰鏈澶у礆紝DBL_MIN鍜孌BL_MAX涓や釜瀹忚〃紺哄弻綺懼害鏁扮殑鏈灝忓煎拰鏈澶у箋