我們可以將像int這樣的值類型轉換作爲向上轉換的float轉換並將其浮動爲int作爲向下轉換嗎?我相信當我們談論向上轉換和向下轉換時,我們特別指的是參考轉換。在C#中向上轉換#
回答
不,價值類型之間的轉換不能被視爲上傳或向下轉換,因爲它們不共享等級鏈接(它們不以任何方式或形式彼此繼承)。
上傳意味着您正在將子類型引用更改爲超類型引用。
向下傳播是相反的方式。
+ gabillion。 – 2013-04-08 13:48:18
不,浮點數不是一個int的特例(I.E.子類)。他們是不同的類型。
不,上行和下行只在繼承的情況下有效。當您在使用簡單類型轉換時可以保存更多或更少數據的值類型之間進行轉換時。其中有兩種不同的類型: 1.隱式轉換。這些轉換可以作爲轉換是「安全」的,也就是說不會丟失數據。例如,您可以安全地將int
值轉換爲long
值。 2.顯式轉換。這些轉換可能會導致數據丟失,因此您必須進行明確的轉換才能進行轉換。例如,將long
值轉換爲int
是不安全的。
更多輸入,請參見:http://msdn.microsoft.com/en-us/library/ms173105.aspx
這些不是向上轉型和向下轉換的示例中,如其他人描述。然而,我們可以討論擴大和縮小原始類型轉換(例如,從int到long是一個擴大的轉換,因此可以隱式完成)。然而,在這種特殊情況下(float/int),轉換隻是一點點不同。
由int到float的隱式轉換,但由於float無法精確地表示整數,轉換實際上仍然會失去精度。這是值得了解的,因爲它隱含了隱含轉換永遠不會丟失信息的一般規則。如果你將整數轉換爲浮點數,並且與它們進行一堆積累數學運算,然後嘗試轉換回整數,這真的很明顯。在這些情況下,如果您假定浮點數是十進制數的完美表示,則近似誤差可能會累積,從而產生不正確的結果。
- 1. C++中的向上轉換
- 2. 上溯造型&向下轉換在C#
- 3. 在C++中使用向上轉換和向下轉換的原因是什麼?
- 4. C#向上轉換/向下轉換繼承
- 5. 轉換和向上轉換
- 6. 在Java文件io中向下轉換和向上轉換?
- 7. C++向下轉換
- 8. 在C++中使用reinterpret_cast向下轉換
- 9. C++ - 上溯造型和向下轉換
- 10. C#轉換向上取整文本框
- 11. C++繼承向下轉換
- 12. C# - 向通用類型的通用方法的向上轉換
- 13. 在php5中向下轉換
- 14. 上溯造型和向下轉換在c#
- 15. 在2003年fortran中向上/向下轉換?
- 16. 在UINavigationController中轉換爲縱向旋轉
- 17. C++中轉換
- 18. 轉換在C#
- 19. 在C++中轉換long-endian?
- 20. 在C#中轉換時區
- 21. 在C#中轉換問題#
- 22. 在C中的Arduino轉換
- 23. 在c中轉換double#
- 24. 轉換JSON值在C++中
- 25. 轉換&#____到\ u ____在c#中?
- 26. 爲什麼在c#中可以直接進行向上轉換,但爲了向下轉換,我們需要expilicit轉換?
- 27. C++向下轉換與虛基類
- 28. 將char *轉換爲向量C++
- 29. C++的類型轉換向量類
- 30. C++:將向量轉換爲元組
「我們特別指的是參考轉換」,通常但不一定。向上和向下轉換與類型之間的繼承關係有關,而不是值v的引用類型。對於所有實際的目的而言,這意味着引用類型,但是這並不排除有人擁有一組實現接口的結構,並允許將接口引用上傳到結構類型。然而,這樣做是瘋狂的,僅僅因爲我們可以做點什麼並不意味着我們應該這樣做。上演是不好的,可以嗎?所以不要慌張,可以嗎?如果可以的話, – 2013-04-08 13:57:48