增量运算符修改原始值,例如
int i = 5;
i++;
printf("%d",i); //prints 6
但是位运算符不,例如
int x = 5;
x<<1;
printf("%d",x);//should print 10 but outputs the original value i.e. 5
答案 0 :(得分:3)
x << 1
类似于x * 2
之类的操作。如果您不将结果存储在任何地方,则将其丢弃,并且优化的编译器可能会完全忽略该行。
如果要将类似操作的结果存储回x
中,则可以使用以下选项:
x = x * 2;
x *= 2;
<<
运算符相同:
x = x << 1;
x <<= 1;