就像標題所說。我的印象是,字符與short short unsigned int
相同,允許0到255之間的任何值。根據Visual Studio上的調試器,每當我聲明char
時,它將從-52 'Í'
開始。爲什麼會出現這種情況,這怎麼可能?未初始化字符爲什麼以及如何在C中以-52開始?
0
A
回答
3
char是否帶或在你的情況下,未簽名是簽名的,這是不確定的,這是覆蓋在其中說,草案C99標準節6.2.5
類型:
三種類型Char,符號的字符,和無符號字符統稱爲 ,稱爲字符類型。應定義炭到 執行具有相同的範圍,表示和行爲作爲有符號 char或unsigned char.35)
unintialized自動變量具有不確定的值,因此它們的初始值是不可預測的。
因爲我們正在談論的Visual Studio,它會根據維基百科的文章Magic number (programming)出現它使用CC
標記未初始化堆棧內存:
微軟的C++調試運行時庫和許多DOS 環境,以紀念使用未初始化的堆棧內存。 CC類似於x86處理器上的INT 3調試斷點中斷的 操作碼。
這將解釋您看到的-52
,但這不應該被認爲是可靠的,不便攜。應該注意的是,使用不確定值會調用未定義的行爲。
3
因爲Visual Studio會在調試模式下將堆棧內存初始化爲0xCC,所以0xCC是int 3(中斷指令)的機器碼,0xCC是十進制的-52。
+0
更多關於這個http://stackoverflow.com /問題/ 370195 /時,和爲什麼,意志的-OS-初始化內存到0XCD-0xdd-等-上自由的新的malloc, – 2014-10-09 03:57:45
相關問題
- 1. 應該如何(以及爲什麼)初始化JUL配置類?
- 2. 初始化變量 - 爲什麼以及有什麼風險?
- 3. 何時以及如何初始化ViewState?
- 4. 什麼是FUSE_NOTIFY_CODE_MAX以及它未被初始化的原因?
- 5. 什麼是數據類型以及如何初始化它?
- 6. 什麼時候$ wp_query已初始化,以及如何覆蓋它?
- 7. 爲什麼以及如何通過Java中的構造函數初始化實例變量進行初始化?
- 8. C#:爲什麼不以字節數組初始化工作?
- 9. 如何在StringReader中重置位置以開始字符串初始化?
- 10. 開始C.變量未被初始化
- 11. 爲什麼字符串需要用初始值初始化?
- 12. 開始:Applet未初始化
- 13. 爲什麼int數組在C++中未初始化爲零?
- 14. 未初始化的字符
- 15. 對象初始化以「!」開始
- 16. 爲什麼在Matlab中2^52等於2^52 + 1?以及如何解決它?
- 17. 爲什麼iScroll未初始化?
- 18. 爲什麼Flexslider未初始化?
- 19. 如何以及何時在Python中初始化配置?
- 20. 爲什麼初始化時WKWebView調用scrollviewDidScroll以及如何防止它?
- 21. Javascript:最多可以初始化什麼?
- 22. 在C中,爲什麼我初始化爲0的int變量被報告爲未初始化爲「nm」?
- 23. 爲什麼未初始化的屬性在課堂上公開?
- 24. 什麼是結構初始化爲C++
- 25. 爲什麼初始化
- 26. 爲什麼字符初始化差異? C
- 27. HTML中的{VARIABLE}是什麼意思,以及如何初始化它?
- 28. 爲什麼可以用文字初始化?
- 29. C++初始化字符指針爲空
- 30. 初始化字符*
只要'signed char'可以包含基本執行字符集,'char'可以在執行時自行決定是否簽名或未簽名。沒有像「short short unsigned int」這樣的東西。你不能依賴未初始化的值爲'-52'。 – 2014-10-09 02:40:40
它從垃圾值開始,因爲您尚未初始化它。 – dasblinkenlight 2014-10-09 02:41:11
我意識到,沒有這樣的東西,短的無符號整數;這就是爲什麼我說「會」。 – Smurfton 2014-10-09 03:14:01