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
的增量永远不会发生。
我可以向任何方向转移但仍然无效。
答案 0 :(得分:1)
<<
运算符未就地运行。你必须在某处分配一个结果。例如:
i = i << 1;
或
i <<= 1;
与上述相同。
答案 1 :(得分:0)
表达式i << 1
不会影响i
的值。您可能正在寻找的是
i = i << 1;
或者也许是以下之一,它们都是这样做的:
i <<= 1;
i = i * 2;
i *= 2;
注意:仅限于i >= 0
。