当我想将整数(例如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#中,如果您处于选中的上下文中,强制转换可以抛出异常*。 –