增量运算符修改原始值,例如,
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
最佳答案
x << 1
类似于 x * 2
等操作。如果您不将结果存储在任何地方,它就会被丢弃,并且优化编译器可能会完全忽略该行。
如果您想将类似操作的结果存储回 x
,您有以下选项:
x = x * 2;
x *= 2;
<<
运算符是相同的:
x = x << 1;
x <<= 1;
关于c - 为什么增量运算符会修改原始值而位运算符不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52101178/