C中的位移位

Tim*_*Tim 3 c bit-manipulation shift

int x = 2;

x = rotateInt('L', x, 1); // should return 4

x = rotateInt('R', x, 3); // should return 64
Run Code Online (Sandbox Code Playgroud)

这是代码,有人可以检查它,让我知道错误是什么?

编译成功,但它说Segmentation Fault我执行它.

int rotateInt(char direction, unsigned int x, int y)
{
  int i;

  for(i = 0; i < y; i++)
  {  

    if(direction == 'R')
    {
       if((x & 1) == 1)
       {
         x = x >> 1;
         x = (x ^ 128);     
       }
       else    
         x = x >> 1;
     }
     else if(direction == 'L')
     {
       if((x & 128) == 1)  
       {
         x = x << 1;
         x = (x ^ 1);     
       }  
       else
       x = x << 1;
     }
   }
   return x;   
 }
Run Code Online (Sandbox Code Playgroud)

San*_*nto 9

立即开始磨练您的调试技巧.如果您将成为任何形式的工程师,您将需要编写各种类型的程序,因此将调试您的所有生活.

开始调试的一种简单方法是将print语句放入其中,以查看代码在其消失之前的程度.我建议你先从错误中分离出来.