當前位置:首頁 » 編程軟體 » 編譯時能進行的類型檢查是

編譯時能進行的類型檢查是

發布時間: 2022-03-06 23:24:30

java的泛型類型檢查是什麼時候做的

在使用泛型時能在編譯時被檢測出的問題,在未使用泛型時是怎樣的情況?即怎樣才會出現這類上文中最後一句提到的不是更容易解決的運行時錯誤?(以代碼舉

㈡ C++是一種靜態數據類型檢查的語言。 什麼是靜態數據類型檢查

換種說法就是編譯時類型檢查, 至於運行時的類型檢查就需要自己處理了

㈢ 按異常在編譯時是否被檢測來分,異常可以分成哪兩種

檢查時異常(checkException)和運行時異常(runtime Exception)

㈣ 內聯函數在編譯時是否做參數類型檢查

這是必須滴啊。

㈤ 內聯函數在編譯時是否作參數類型檢查

現在你不必理會這些東西。現在的CPU很智能的,只要你的語法不錯誤,內聯和寫在外面,不會有任何的區別。

㈥ 對於C++語言來說,什麼叫做類型檢查

靜態類型檢查:編譯器檢查,int i = "k" 編譯器直接報錯
還有dynamic_cast<>()也是由編譯器進行類型檢查

㈦ 類型系統的類型檢查

類型檢查所進行的檢驗處理以及實行類型的約束,可發生在編譯時期(靜態檢查)或運行時期(動態檢查)。靜態類型檢查是在編譯器所進行語義分析中進行的。如果一個語言強制實行類型規則(即通常只允許以不丟失信息為前提的自動類型轉換)就稱此處理為強類型,反之稱為弱類型。 如果一個編程語言的類型檢查,可在不測試運行時期表達式的等價性的情況下進行,該語言即為靜態類型的。一個靜態類型的編程語言,是在運行時期和編譯時期之間的處理階段下重視這些區別的。如果程序的獨立模塊,可進行各自的類型檢查(獨立編譯),而無須所有會在運行時出現的模塊的那些信息,該語言即具有一個編譯時期階段。如果一個編程語言支持運行時期(動態)調度已標記的數據,該語言即為動態類型的。如果一個編程語言破壞了階段的區別,因而類型檢查需要測試運行時期的表達式的等價性,該語言即為依存類型的。
在動態類型中,經常在運行時期進行類型標記的檢查,因為變數所約束的值,可經由運行路徑獲得不同的標記。在靜態類型編程語言中,類型標記使用辨識聯合類型表示。
動態類型經常出現於腳本語言和RAD語言中。動態類型在解譯語言中極為普遍,編譯語言則偏好無須運行時期標記的靜態類型。對於類型和隱式類型語言較完整的列表參見類型和隱式類型語言。
術語推斷類型(鴨子類型,ck typing)指的是動態類型在語言中的應用方式,它會「推斷」一個數值的類型。
某些靜態語言有一個「後門」,在這些編程語言中,能夠編寫一些不被靜態類型所檢查的代碼。例如,Java 和 C-風格的語言有「轉型」可用。在靜態類型的編程語言中,不必然意味著缺乏動態類型機制。例如 Java 使用靜態類型,但某些運算需要支持運行時期的類型測試,這就是動態類型的一種形式。更多靜態和動態類型的討論,請參閱編程語言。 對靜態類型和動態類型兩者之間的權衡也是必要的。
靜態類型在編譯時期時,就能可靠地發現類型錯誤。因此通常能增進最終程序的可靠性。然而,有多少的類型錯誤發生,以及有多少比例的錯誤能被靜態類型所捕捉,仍有爭論。靜態類型的擁護者認為,當程序通過類型檢查時,它才有更高的可靠性。雖然動態類型的擁護者指出,實際流通的軟體證明,兩者在可靠性上並沒有多大差別。可以認為靜態類型的價值,在於增進類型系統的強化。強類型語言(如 ML 和 Haskell)的擁護者提出,幾乎所有的臭蟲都可以看作是類型錯誤,如果編寫者以足夠恰當的方式,或者由編譯器推斷來聲明一個類型。
靜態類型通常可以編譯出速度較快的代碼。當編譯器清楚知道所要使用的數據類型,就可以產生優化過後的機器碼。更進一步,靜態類型語言中的編譯器,可以更輕易地發現較佳捷徑。某些動態語言(如 Common Lisp)允許任意類型的聲明,以便於優化。以上理由使靜態類型更為普及。參閱優化。
相較之下,動態類型允許編譯器和解譯器更快速的運作。因為源代碼在動態類型語言中,變更為減少進行檢查,並減少解析代碼。這也可減少編輯-編譯-測試-除錯的周期。
靜態類型語言缺少類型推斷(如 Java),而需要編寫者聲明所要使用的方法或函數的類型。編譯器將不允許編寫者忽略,這可為程序起附加性說明文件的作用。但靜態類型語言也可以無須類型聲明,所以與其說是靜態類型的代價,倒不如說是類型聲明的報酬。
靜態類型允許構造函數庫,它們的用戶不太可能意外的誤用。這可作為傳達庫開發者意圖的額外機制。
動態類型允許建構一些靜態類型系統所做不出來的東西。例如,eval 函數,它使得運行任意數據作為代碼成為可能(不過其代碼的類型仍是靜態的)。此外,動態類型容納過渡代碼和原型設計,如允許使用字元串代替數據結構。靜態類型語言最近的增強(如 Haskell 一般化代數數據類型)允許 eval 函數以類型安全的方式撰寫。
動態類型使元程序設計更為強大,且更易於使用。例如 C++ 模板的寫法,比起等價的 Ruby 或 Python 寫法要來的麻煩。更高度的運行時期構成物,如元類型(metaclass)和內觀(Introspection),對靜態類型語言而言通常更為困難。

㈧ 編譯原理試題,高手幫幫忙 ,在線等

太多了吧。。。
第五題是 句柄

㈨ java編譯時類型和運行時類型該如何理解

編譯期只會檢查實例聲明的類型和強制轉化的類型是否存在extend/implement關系,因為從聲明變數類型,到強制轉化變數的類型之間可能存在編譯期無法解析的代碼,雖然示例中只是一個簡單的賦值,肉眼就可以判斷實際類型,但是對於編譯器來說是無法判斷的,舉個簡單的例子:
public static void foo(boolean flag) {
Useful xx = flag ? new Useful() : new MoreUseful();
((MoreUseful)xx).g(); // 編譯器如何判斷此處是否有錯誤?
// flag=false的時候可以正常運行,就不能說這里有編譯期錯誤}public static void main(String[] args) {
foo(true);
foo(false);
}

熱點內容
安卓雙擊鎖屏如何設置 發布:2025-01-20 23:56:52 瀏覽:201
拉鏈壓縮袋 發布:2025-01-20 23:55:16 瀏覽:685
少兒編程多少錢一節課 發布:2025-01-20 23:53:46 瀏覽:939
政府網站登錄密碼是什麼意思 發布:2025-01-20 23:53:09 瀏覽:188
pythonwin26 發布:2025-01-20 23:37:00 瀏覽:502
國外哪些同款同配置車比國內貴 發布:2025-01-20 23:32:55 瀏覽:994
匯編為什麼少編譯了一條語句 發布:2025-01-20 23:30:57 瀏覽:146
伺服器內存不夠電腦會怎麼樣 發布:2025-01-20 23:10:35 瀏覽:209
discuz圖片上傳失敗 發布:2025-01-20 22:59:55 瀏覽:95
c語言函數分為 發布:2025-01-20 22:59:42 瀏覽:535