Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
求和1时输出异常<&书信电报;2和1<&书信电报;C+中的3个+; 所以我只是尝试了C++中的一些操作。以下是我尝试过的: int a = 1<<2; cout<<a;_C++_Bit Manipulation_Operator Precedence - Fatal编程技术网

求和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;