【发布时间】:2017-03-15 16:23:36
【问题描述】:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
if(n&1==0) //without using bracket (n&1)
cout<<"Number is even";
else
cout<<"Number is odd";
return 0;
}
输出:奇数 //对于 n=6
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
if((n&1)==0)
cout<<"Number is even";
else
cout<<"Number is odd";
return 0;
}
输出:偶数 //for n=6
在使用位运算符时是否必须使用括号?
【问题讨论】:
-
operator precedence,相等运算符的优先级高于位运算符,因此需要括号
-
是的,我的错。
-
@EdChum 我会使用更强的“需要括号”,即。运营商的任何混合。那样更容易
-
这就是为什么你应该有你的警告。我的 GCC 说
warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]关于第一个 sn-p。 -
在对操作顺序问题有任何疑问时包含括号将帮助您的代码读者理解您打算实现的行为 - 没有它们,他们将不得不怀疑他们是否正在查看一个微妙的操作顺序错误,或者不是。
标签: c++ bitwise-operators evaluation