【C#笔记】探究移位运算符">>"

时间:2023-01-11 16:06:30
Code:
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Linq;   
  4. using System.Text;   
  5.   
  6. namespace YiWei   
  7. {   
  8.     class Program   
  9.     {   
  10.         static void Main(string[] args)   
  11.         {   
  12.             short val = 38;   
  13.   
  14.             //byte result1 = val >> 1;   
  15.             //Console.WriteLine(result1);   
  16.             /* 错误 1 无法将类型“int”隐式转换为“byte”。  
  17.              * 存在一个显式转换(是否缺少强制转换?)   
  18.              * D:/c#/YiWei/YiWei/Program.cs 14 28 YiWei*/  
  19.   
  20.             //short result2 = val >> 1;   
  21.             //Console.WriteLine(result2);   
  22.             /*错误 1 无法将类型“int”隐式转换为“short”。  
  23.              * 存在一个显式转换(是否缺少强制转换?)   
  24.              * D:/c#/YiWei/YiWei/Program.cs 21 23 YiWei*/  
  25.   
  26.   
  27.             int result3 = val >> 1;   
  28.             Console.WriteLine(result3);   
  29.   
  30.             long result4 = val >> 1;   
  31.             Console.WriteLine(result4);   
  32.   
  33.             Console.WriteLine(val>>1);   
  34.   
  35.             Console.ReadKey();   
  36.         }   
  37.     }   
  38. }   
  39.   

从以上代码来看,移位运算 ">>" 的val>>1的表达式结果是int型的值。
一般的类型都可以做位运算">>" ,但是结果是int型值。这个结果可以隐式转换为其他类型。