2014-11-04 121 views
0

有人可以解釋一般情況下編程環境中什麼是低級別和高級別數據類型。 來自Java背景我認爲低級別是諸如整型,布爾型,String等原始類型,高級別將是複合對象類型。 不太確定這是一般的理解,但我無法在網上找到明確的定義。低級別和高級別數據類型

+0

您的理解是正確的:低級類型通常是基元,而高級類型通常是由基元或其他高級類型組成的類型。這是粗糙的,非正式的類型分類。 – xxbbcc 2014-11-04 15:27:30

+0

你從哪裏聽到這個詞?你應該看那裏的定義。 – svick 2014-11-04 18:35:07

+0

@xxbbcc謝謝 – panas 2014-11-05 12:06:09

回答

0

您的理解一般是正確的,但它也非常依賴於您的特定代碼堆棧。

例如,您將String列爲基元類型;但是在C語言中,例如,一個字符串通常只是一個字符數組,而一個全功能的字符串(就像Java中的那個)是一個非常高級的對象。至少比某些struct更高級別,您可以輕鬆定義,如複雜數字或像typedef struct {float x, y} Point這樣的2d點。

當然,它可以很容易地解釋,因爲Java是比C更高級的語言,所以它的原語比C語言更高。最後,這意味着「高/低」水平只是定義爲相對值,有些東西比其他水平高。

最終,軟件中的所有內容都必須由CPU執行,因此有必要注意哪些概念在硬件中實現,哪些不是。

整數,指針,位域,浮點等對大多數CPU來說都是通用的。其中一些還處理數組,甚至是簡單的(C樣式)字符串。

結構和類型值通常在代碼中是「隱式」的,但不是CPU特性,所以它們稍微高一點,但通常很低,以至於可能沒有明確的代碼來處理它們,只是結構該程序使數據按預期運行。

+0

非常感謝。這對我來說很明顯 – panas 2014-11-05 12:04:46

0

我會說'低級別'取決於您的操作系統體系結構,例如C中的'unsigned int'。它在64位和32位體系結構上不同。另一方面,你可以從你的硬件中抽象出一些東西。例如任何類型的無限列表(在haskell中)