[英]The operators << and >> in C# with byte
为什么我不能像这样使用运算符 << 和 >>?
byte num = 32;
byte aux = num << 5;
“为什么我不能像这样使用运算符 << 和 >>?”
那是因为您的 C# 表达式 num<<5 将评估为int 。 分配给字节的正确方法是将 int 转换为字节,丢弃 int 的高位字节,即: (byte)(num<<5) 。 强制转换后的结果将是预期的 0 到 255 之间的值。
因为 << 将 32 与 2^5 相乘,最大字节值为 255
byte num = 32;
int aux = num << 5;
此代码将有效
因为移位运算符仅针对 int、uint、long 和 ulong 类型定义,所以运算结果始终包含至少 32 位。 如果左侧操作数是其他整数类型(sbyte、byte、short、ushort 或 char),则其值将转换为 int 类型,如以下示例所示:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.