avi*_*irk 0 c++ operator-keyword
我知道这是一个愚蠢的问题,但我不知道我错过了哪一步,所以无法理解为什么输出是这段代码的输出.
int i=2;
int c;
c = 2 * - ++ i << 1;
cout<< c;
我在这段代码中理解这一行很困难:
c = 2 * - ++ i <<1;
我收到了结果-12.但我无法理解运算符的优先级如何在这里工作?
++i正被评估,得到3.-正在被评估,屈服-3.-6.-12.-12将分配给变量c.如果你使用括号来查看运算符优先级在做什么,你就会得到
c = ((2 * (-(++i))) << 1);
Run Code Online (Sandbox Code Playgroud)
此外,由于运算符之间的奇怪间距,该表达式有点误导.写它会更好c = 2 * -++i << 1;
1请注意,这不是一元*,它取消引用指针.这是乘法运算符,它是二元运算符.