运算符优先级以及合理使用
作者:
YNORI
,
2023-04-16 13:33:07
,
所有人可见
,
阅读 195
运算符的优先级
运算符在表达式中以不同的优先级顺序进行计算。当一个表达式中有多个运算符时,会按照以下顺序进行计算:
1. 圆括号内的表达式
2. 一元运算符(如取反、自增、自减等)
3. 乘法、除法、取模运算符(* / %)
4. 加法、减法运算符(+ -)
5. 移位运算符(<< >>)
6. 关系运算符(< <= > >=)
7. 相等性运算符(== !=)
8. 按位与运算符(&)
9. 按位异或运算符(^)
10. 按位或运算符(|)
11. 逻辑与运算符(&&)
12. 逻辑或运算符(||)
13. 条件运算符(?:)
14. 赋值运算符(= += -= *= /= %= <<= >>= &= ^= |=)
15. 逗号运算符(,)
注意:当运算符的优先级相同时,会按照从左到右的顺序计算表达式。如果想要改变优先级顺序,
可以使用圆括号来明确运算次序。
实数对应的二进制表示方案
对于每一个实数,它所对应的二进制是唯一的,每一个二进制是唯一的01编码,那么可以把0,1表
示为不同的涵义。那么一直每一个方案为n,根据位运算就可以知道对应二进制位是0还是1,进而
知道所对应的操作方案。
运算符的巧妙使用
递归实现指数型枚举
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
void dfs(int u,int way)
{
if(u == n)
{
for (int i = 0; i < n; i ++ )
if(way >> i & 1) cout << i + 1 << " ";
cout << endl;
return;
}
dfs(u + 1, way);
dfs(u + 1, way | 1 << u);
}
int main()
{
cin >> n;
dfs(0,0);
return 0;
}
第二个版本
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
int a[20];
bool st[20];
void dfs(int u)
{
if(u > n)
{
for (int i = 1; i <= n; i ++ )
if(st[i] == 1) cout << i << " ";
cout << endl;
return;
}
st[u] = false;
dfs(u + 1);
st[u] = false;
st[u] = true;
dfs(u + 1);
st[u] = false;
}
int main()
{
cin >> n;
dfs(1);
return 0;
}