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;
}
答案 0 :(得分:9)
立即开始磨练您的调试技巧。如果您将成为任何形式的工程师,您将需要编写各种类型的程序,因此将一直在调试。
开始调试的一种简单方法是将print语句放入其中,以查看代码在其消失之前的程度。我建议你先将错误隔离开来。
答案 1 :(得分:2)
不确定seg故障,但我认为
if((x & 128) == 1)
应该是
if((x & 128) == 128)
或只是
if(x & 128)
答案 2 :(得分:1)
我试过我的电脑(MacBookPro / Core2Duo)并且它有效。 顺便问一下,你的目标架构是什么?当您使用C运算符“&gt;&gt;”时,一些(许多)处理器执行旋转而不是移位和“&lt;&lt;”。
答案 3 :(得分:0)
当您使用^
时,您不是指或运算符|
?