做什么和右移不起作用

时间:2017-01-13 19:19:31

标签: c do-while

int i=1,j=0,n=10,k;
do{
    j+=i;
    i<<1;
    printf("%d\n",i);
   // printf("%d\n",12<<1);
}while(i<=n);
printf("%d\n",j);

在while循环中,移位运算符工作(12 <&lt; 1 = 24)但i<<1保持0.J持续增加。如果我将n改为0,则循环将停止,这是正常的但是i的增量永远不会发生。

我可以向任何方向转移但仍然无效。

2 个答案:

答案 0 :(得分:1)

<<运算符未就地运行。你必须在某处分配一个结果。例如:

i = i << 1;

i <<= 1;

与上述相同。

答案 1 :(得分:0)

表达式i << 1不会影响i的值。您可能正在寻找的是

i = i << 1;

或者也许是以下之一,它们都是这样做的:

i <<= 1;
i = i * 2;
i *= 2;

注意:仅限于i >= 0