回答
這是可能是溢出(除非CHAR_MAX >= 256
)。這是未定義的行爲,並且可能發生任何事情。這是不太可能來格式化您的硬盤。
'這不太可能格式化您的硬盤。「我喜歡那個評論。 –
有趣。而且CHAR_MAX應該> 256 =?我會假設沒有。 –
@C_B:當'CHAR_BIT == 16'時,我希望它是32767或65535。 – MSalters
這將是一個undefined behavior。 char的範圍是-128到+127或0到255,這取決於它是有符號還是無符號,所以在你的情況下可能會發生任何事情。
它會存儲一個值爲256的虛擬字符嗎?
它會告訴你一個未定義的行爲。你不能預測的東西。
還是這是非法的,應該永遠不要做?
我不會說這是非法的,但是如果你不想進入不可預知的環境,那麼不要這樣做。
範圍實際上可能是0到255.它是執行特定的,如果'char'有符號或無符號。 –
您假設的範圍不正確。它至少是'[0,127]',可能更多,但你不應該假設更多,並在哪個方向。 – MSalters
這將產生一個警告說「溢出發生」。但是我發現255之後分配給char的任何其他數字 - 它會從0重新開始,併爲其分配適當的ASCII字符。 像
256 -> (null) equivalent to 0
300 = 256+44 -> , equivalent to 44
非常有趣,感覺很好。 –
請注意,這是一個編譯器特定的答案,但未能說明哪個編譯器。在一些編譯器中,它甚至取決於設置(例如,在Visual Studio 400-> 144或-112) – MSalters
我想知道這是依賴於機器還是其他?達到255限制後,LSB是否被編譯器拋棄? – vishram0709
- 1. 初始化字符*
- 2. 數據框初始化 - 字符初始化讀爲因子?
- 3. 字符串不斷初始化爲空
- 4. C++初始化字符指針爲空
- 5. 字符指針初始化
- 6. 初始化字符數組
- 7. 字符數組初始化
- 8. Android字符串初始化
- 9. 初始化「的字符串」
- 10. 字符串初始化
- 11. GPS初始化字符串?
- 12. 字符串初始化
- 13. 字符指針初始化
- 14. 未初始化的字符
- 15. 爲什麼字符串需要用初始值初始化?
- 16. 將字段值初始化爲零?
- 17. 初始化字符和字符指針
- 18. 將'var'初始化爲空
- 19. 將字符串寫入初始化空白字符數組
- 20. 與初始化字符串字面
- 21. 初始化字符串爲空與空字符串
- 22. 將字符初始化後將字符添加到空字符串
- 23. 將@InitBinder初始化外部化爲WebBindingInitializer
- 24. 作爲原始類型的Java字符串初始化
- 25. 從字符串初始化單元
- 26. 初始化字符串使用指針
- 27. 字符數組未正確初始化
- 28. C中的字符串初始化
- 29. 字符串初始化和性能
- 30. LLVM IR字符串初始化
焦炭通常是0-255(在大多數系統) – jsantander
編譯器可以做就是了。我期望大多數現代人發出警告並將字符初始化爲零。 –
或'[-128,+ 127]'。不要假設;如果你想明確的話,有'signed char'和'unsigned char'。 – MSalters