當我想將整數(例如32位整數/整數)轉換爲另一整數類型(例如8位整數/字節)時,是否有區別。以下是我可以將其轉換爲兩種方式的一些示例代碼:從整數轉換爲整數有什麼不同嗎?
byte foo(int value)
{
//return value; <-- this causes problems because I need to convert it to byte
//First way(most people use this):
return (byte)value; //this involves casting the value and also works if value is floating point type
//Second way:
return value & byte.MaxValue; //byte.MaxValue is a constant that is 255
}
那麼兩者之間有什麼區別嗎?我知道按位操作只適用於整數類型。我知道第二種方式不太可讀或不推薦。除此之外,兩種方式的輸出都不相同。這不僅適用於int和byte,而且適用於每個整數整數類型的組合。
好吧,看來這個操作在不同的語言中有不同的行爲。我不想看到差異,所以請發佈C++/C#/ D的答案。
此外我忘了我的意思是隻有無符號整數(沒有簽名)。所以它適用於所有的無符號整數類型。
什麼是「字節」?編輯:哦,它也被標記爲C#。每種語言的答案可能會有所不同。 –
對於每種語言,它並不會讓我感到不同。這更多是一個理論問題。 – Bosak
@Bosak:不管它對你有沒有意義,它都*取決於語言。不同的語言可以有不同的規則。例如,在C#中,如果您處於選中的上下文中,強制轉換可以拋出異常*。 –