我正在解决C++选择题。 我不能够理解为下面的代码::优先权规则
#include <iostream>
using namespace std;
int main()
{
int x,y,z;
x=y=z=1;
z=++x || ++y && ++z;
cout<<x<<" "<<y<<" "<<z<<endl;
system("pause");
return 0;
}
我解决以下方式这个问题:: 优先顺序::
Precedence "++" greaterthan Precedence "&&" greaterthan Precedence "||"
而且,一元的关联性输出++是“从右到左” 。 所以
z=(++x)||(++y) && (2)
z=(++x)||(2)&& (2)
z=(2)||(2)&&(2)
z=(2)|| 1 //As 2 && 2 is 1(true)
z=1 // As 2 || 1 is 1(true)
所以按照我,正确的输出应为X = 2,Y = 2和z = 1。
但是当我在我的编译器中运行这段代码时,编译器输出是x = 2,y = 1,z = 1。
为什么我得到这样的输出和我犯错的地方?
谢谢!
Charles Bailey非常感谢。所以基本上,运算符优先级先将表达式组合起来。评估总是从左到右完成是不是? – 2012-08-04 22:10:12
@ritesh_nitw:通常,表达式的评估不一定是从左到右进行的,但是这对于'||'和'&&'来说是确定的,其中左操作数总是首先被评估。 – 2012-08-04 22:12:32