这个问题源于一道分解质因数的水题(codevs 1313)
我的源码中有一段是
int n,p;
scanf("%d",&n);
if (n&1==0){
printf("%d",n/2);
return 0;
}可是问题出现了 如果我们输入一个偶数 这个程序块根本不跑
这是一项很奇怪的事 因为快速幂非递归中 我们常用到if(n&1==1)这样的句子
LGA大婶,ZLC神犇纷纷表示无法解答 但鄙人在知乎上找到了答案http://www.zhihu.com/question/20798455
因为这时候我才恍然大悟:位运算优先级非常低 左右移甚至比加减运算优先级还低
没想到的原因 一个是P党时代不用考虑这个 直接and shr这样的 在一个是平时也不大注意 果然还是加括号吧 也能提高程序可读性
——明明如月,何时可掇?忧从中来,不可断绝。

本文源自一道关于质因数分解的编程题目,在讨论如何通过位运算判断数字奇偶性时发现了一个常见误区:位运算符&的优先级较低。文章通过实际案例解释了这一现象,并强调了使用括号来提高代码可读性和正确性的必要性。
9万+





