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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值