我在Windows 8 x64上使用Visual Studio 2013 Ultimate,我從頭開發一個遊戲(如果你願意的話)。我有多平臺的思想,包括移動和我已經通過stackoverflow閱讀,ILP
,LP
,LLP
可能是一個問題。 我看到類似int,long等類型非常鬆散地依賴於編譯器,機器以及誰知道其他什麼,並且一個字節不完全是8位加上微軟有它自己的額外類型 - 這些都是令人生畏的 - 我問你誰知道更好,伸出援助之手。intn_t什麼時候使用它,什麼時候不使用
目前我傾向於int8_t
,int16_t
等,它們看起來像他們適合最好的這些想法:
擔保我的類型不會溢出一些平臺,甚至移動,在運行時。例如:
int x
可以保存100000的值(int是16位上的最大值65535)。確保我使用最小尺寸的作業類型,不僅因爲內存是一種寶貴的資源,而且首先是因爲較大類型的操作較慢。否則,我會使用128位類型(我不確定它是否存在於C++中),因爲我需要相對較好的幾何精度,但我仍然不會爲一些高度專業化的數學庫的精度而交換速度。
所以接下去我,因爲我需要有關類型大小的認識並不需要儘可能多的控制,明智地使用所有的空間和時間,我可以得到,因爲遊戲是資源的性質,要求加我的工作具有大量數據結構(數千個元素)進行渲染。
但是intn_t
可能是錯誤的方式,因爲它是固定的並且不適用於單個平臺,其CPU針對不同大小的內存塊進行了優化。
在我的情況下最適合的方法是什麼? 什麼時候建議使用intn_t
並建議不要?
「較大類型的操作速度較慢」不正確。對非本地字的操作*可能會較慢,但通常所有整數類型的操作均等於「快速」,與實際大小無關。另外,使用固定大小的整數不會防止溢出,例如可以說你有一個'uint8_t'變量,它的值是'255'。給它添加'1'就會溢出。儘管知道最大值比較容易,但是,無論如何,使用例如['的std :: numeric_limits'](http://en.cppreference.com/w/cpp/types/numeric_limits)。 – 2014-10-01 09:36:44
假設您打算編譯的所有平臺都支持它們,固定大小的類型都可以。擔心每種類型的速度當然爲時過早。如果真的讓你擔心,你可以使用int_leastN_t或int_fastN_t類型,但是你不知道所有平臺上的大小都是一樣的,並且在沒有分析的情況下猜測某些事情會很慢。 – 2014-10-01 09:40:20
我現在看到'word'speed。我想開始「正確」,以便以後不必重構。 – mireazma 2014-10-01 09:49:53