c - C 中的位移位

标签 c bit-manipulation shift

int x = 2;

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

x = rotateInt('R', x, 3); // should return 64

这是代码,有人可以检查一下并告诉我错误是什么吗?

编译成功,但执行时提示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;   
 }

最佳答案

现在开始磨练您的调试技能。如果您要成为任何形式的工程师,您将需要编写各种程序,因此一生都在调试。

开始调试的一种简单方法是放入 print 语句,以查看您的代码在结束前执行了多远。我建议您从隔离错误开始。

关于c - C 中的位移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3929072/

相关文章:

c - 在 Eclipse 中调试 C 程序 : Failed to execute MI command: -data-disassemble

c - __attribute__((malloc)) 与限制

c - 在 C 中定义宏将不起作用

c - 在 C 中移动数字

c - 在 C 中移动单词时跳过标点符号

c - 为什么 C 中的 while 循环不起作用?

android - 如何在android中弯曲位图

c++ - 关于按位 And 和 Shift 运算的问题

python-3.x - groupby pandas数据框中连续相同的值和出现次数的累积计数

c++ - 需要移动双端队列中的元素。代码不工作