回答
在像C這樣的語言中,信息總是以您解釋數據的方式「存儲」。編譯器添加了一些好處,它在一定程度上理解變量的類型並嘗試防止無意義的操作。
例如,假設你有位:0xFFFFFFFF
。如果你將它們解釋爲「32b unsigned int」,你會得到4294967295
。如果你將它們解釋爲「32b signed int」,你會得到-1
(*)。如果你把它們解釋爲雙重的,上帝知道你會得到什麼。
「如果你把它們解釋爲雙重的,上帝知道你會得到什麼。」問題,通常。 'double'往往是64位。如果你將它們解釋爲'float',如果使用IEEE754,則它是NaN。 – 2012-03-18 20:02:07
沒有地方,它只是由代碼假設。
需要注意的是,在其他語言(C++)中,有一個叫vtable的動態綁定,它包含了一些關於對象類型的信息。 – Mikhail 2012-03-18 19:48:54
@Misha這個問題是關於C,這就是爲什麼我沒有添加這個信息 – heinrich5991 2012-03-18 19:49:28
當C程序已經過去鏈接了,並且不需要在外面暴露任何符號時,這些數據就不再存在了。
數據類型與語言相關,當可執行文件準備就緒時,語言不再起作用,因爲現在它全部是內存和處理器。
C應用程序不存儲類型信息。唯一的執行是使用數據的方式。而在C中,濫用該強制措施是一件非常簡單的事情。
考慮以下幾點:
short s;
short *p = &s;
*(long*)p = 0;
此代碼需要一個指針到短變量,然後寫入該變量,就像它是一個長。這會覆蓋超出正在使用的變量所擁有的內存,導致未定義的行爲。
你可能是指'*(long *)&s'? – asaelr 2012-03-18 19:47:22
哎呀!是的,固定的。 – 2012-03-18 19:48:01
UB('(long)p'可能不對齊)。爲了這個例子,更好地切換開關。 – 2012-03-18 21:05:14
該信息未被存儲。例如,你可以做這樣的事情
int i=15;
char *p=(char*)&i;
char c=*p; //Now, c contain the first byte of 15, which may be 15 or 0
但不這樣做,除非你真的知道你會怎麼做。像這樣的東西不重要是錯誤的常見方式。
這爲什麼會出錯?如果我們printf(「%c」,c)會發生什麼; – 2012-03-18 19:58:56
@SharatChandra如果你知道自己在做什麼,那很好。只是如果有人不知道和做這樣的事情,通常是無稽之談。 – 2012-03-18 20:04:03
@SharatChandra就像丹尼爾寫道的那樣,當你知道自己在做什麼的時候,這很好,但即使在這個簡單的例子中,「c」可能是0或15.在更復雜的情況下,我們還需要小心對齊。 – asaelr 2012-03-18 21:33:07
- 1. fortran:在變量存儲在內存中後,識別變量*的內在類型
- 2. 在C++中識別內存泄漏
- 3. C如何在內存中存儲不同的數據類型?
- 4. 識別數據類型
- 5. 識別cookie數據類型
- 6. 如何在objective-c中識別一類數據類型bool或char的屬性?
- 7. 無法識別數據庫中的數據類型nvarchar
- 8. 在SQLite中識別列的數據類型Android遊標
- 9. 識別asp.net中參數的值c#
- 10. 數據辨識類型在C/C++
- 11. 如何識別R中數據框中的變量類型?
- 12. 在C中存儲數據類型
- 13. 在MySQL存儲過程中無法識別的數據類型錯誤
- 14. 如何識別包含在C中的字符串中的數字的類型?
- 15. 如何在執行存儲過程後識別數據類型?
- 16. 在C++中,枚舉數據類型消耗多少內存?
- 17. C中的數據類型
- 18. postgresql,無法識別記錄數據類型中的列
- 19. 如何識別excel列中不同格式的數據類型
- 20. 識別表格視圖中的數據類型
- 21. 在C#中的列表中保存不同類型的數據#
- 22. 如何識別圖像中存在的噪音類型
- 23. 存儲在sockadrr_in結構中的類型不被識別
- 24. 在C#中創建F#已識別的聯合類型
- 25. C++:識別物體的類型
- 26. 在ColdFusion中無法識別WSDL GUID數據類型?
- 27. PostgreSQL:如何識別數據類型?
- 28. JdbcTemplate如何識別數據類型?
- 29. LINQ到數據:聰明類型識別
- 30. Java - 識別值類型的模式
另請參見[此複製](http://stackoverflow.com/questions/39206296/how-does-memory-determine-data-type-of-variable)這也吸引了一些很好的答案。 – 2016-08-30 01:05:36