【基础练习】n&1==0错在哪儿?

来源:互联网 发布:喷泉动画软件 编辑:程序博客网 时间:2024/06/04 23:25

这个问题源于一道分解质因数的水题(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这样的 在一个是平时也不大注意 果然还是加括号吧 也能提高程序可读性

——明明如月,何时可掇?忧从中来,不可断绝。



0 0
原创粉丝点击