求和1时输出异常<&书信电报;2和1<&书信电报;C+中的3个+; 所以我只是尝试了C++中的一些操作。以下是我尝试过的: int a = 1<<2; cout<<a;
这将输出为求和1时输出异常<&书信电报;2和1<&书信电报;C+中的3个+; 所以我只是尝试了C++中的一些操作。以下是我尝试过的: int a = 1<<2; cout<<a;,c++,bit-manipulation,operator-precedence,C++,Bit Manipulation,Operator Precedence,这将输出为8 但当我这样做的时候: int a = 1<<2 + 1<<3; cout<<a; 这将输出为预期的12。这是因为加法的运算符优先级高于位移位。换句话说,您的第二个示例相当于1它是关于 +的优先级高于移位运算符,因此1该+运算符的优先级高于。这是因为1作为一般规则,在这种情况下使用括号。它们可能并不总是必要的,但它们增加了可读性并降低了此类错误的风险。此外,您不需要背诵运算符优先级的每一种情况。 int a = 1<<2 + 1<
8
但当我这样做的时候:
int a = 1<<2 + 1<<3;
cout<<a;
这将输出为预期的
12
。这是因为加法的运算符优先级高于位移位。换句话说,您的第二个示例相当于1它是关于
+
的优先级高于移位运算符,因此1该+
运算符的优先级高于。这是因为1作为一般规则,在这种情况下使用括号。它们可能并不总是必要的,但它们增加了可读性并降低了此类错误的风险。此外,您不需要背诵运算符优先级的每一种情况。
int a = 1<<2 + 1<<3;
cout<<a;
int a = 1<<2;
int b = 1<<3;
cout<<a + b;