Linux中國
C語言數據類型是如何被大多數計算機系統所支持?
回答:
在許多嵌入式系統中,硬體上並沒有浮點運算單元。因此,如果你寫出下面的代碼:
float x = 1.0f, y = 2.0f;
return x + y;
可能會被轉化成下面這種形式:
unsigned x = 0x3f800000, y = 0x40000000;
return _float_add(x, y);
然後編譯器或標準庫必須提供'floatadd()'的具體實現,這會佔用嵌入式系統的內存空間。依此去計算代碼在某個微型系統(譯者註:也就是指微型嵌入式系統)的實際位元組數,也會發現有所增加。
另一個常見的例子是64位整型數(C語言標準中'long long'類型是1999年之後才出現的),這種類型在32位系統上也不能直接使用。古董級的SPARC系統則不支持整型乘法,所以在運行時必須提供乘法的實現。當然,還有一些其它例子。
其它語言
相比起來,其它編程語言有更加複雜的基本類型。
比如,Lisp中的symbol需要大量的運行時實現支持,就像Lua中的table、Python中的string、Fortran中的array,等等。在C語言中等價的類型通常要麼不屬於標準庫(C語言沒有標準symbol或table),要麼更加簡單,而且並不需要那麼多的運行時支持(C語言中的array基本上就是指針,以NULL結尾的字元串實現起來也很簡單)。
控制結構
異常處理是C語言中沒有的一種控制結構。非局部的退出只有'setjmp()'和'longjmp()'兩種,只能提供保存和恢復某些部分的處理器狀態。相比之下,C++運行時環境必須先遍歷函數調用棧,然後調用析構函數和異常處理函數。
via:stackoverflow
作者:Dietrich Epp 譯者:KayGuoWhu 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive
對這篇文章感覺如何?
太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
More in:Linux中國
如何通過 VLC 使用字幕
使用 VLC 媒體播放器播放和管理字幕的新手指南。
Unix 桌面:在 Linux 問世之前
僅僅開源還不足以實現開放,還需開放標準和建立共識。
Valve 對於 Ubuntu 的 Snap 版本的 Steam 並不滿意:原因何在
你可能會發現,Snap 版本的 Steam 並不如你期待的那樣好,你怎麼看?
Wine 9.0 發布,實驗性地加入了 Wayland 驅動
Wine 的這個新版本正在為未來做好準備!