在下面的语句中,在VC++中,首先评估哪个布尔表达式?此外,他们都被评估?哪个布尔表达式首先在包含OR操作的IF语句中被评估?
if((X==Y) || (Z==T))
{
//code here
}
在下面的语句中,在VC++中,首先评估哪个布尔表达式?此外,他们都被评估?哪个布尔表达式首先在包含OR操作的IF语句中被评估?
if((X==Y) || (Z==T))
{
//code here
}
它们从左到右进行评估,如果第一个是真的,则短路表达式和第二个不评估。
左至右第一个表达式将总是被评估(在这种情况下(X==Y)
),第二个表达式(再次从左向右在这种情况下(Z==T)
)将仅在该第一是假评价。这被称为Short-circuit evaluation。
除了他们不是陈述。 – delnan 2010-12-21 19:24:18
X == Y将被首先评估。如果为真,并且由于条件是OR,则线上的其他内容都不会被评估。
如果使用内置的||
运算符,则将在评估Z == T
之前评估X == Y
。内置的||
运算符从左到右进行评估,并且它会短路,所以如果X == Y
为true,则根据定义X == Y || Z == T
为真,因此不会评估Z == T
。
但是,||
运算符也可能被重载,并且如果它超载它不会短路。如果在此选择||
的用户定义的超载用于||
,则对X == Y
和Z == T
都进行评估,即使X == Y
为真。 ||
运算符极其罕见,因为它可能导致不直观的代码。记住它的行为与内置操作符的行为不同,这一点非常重要。
这是功课吗?查看捷径运营商。 – 2010-12-21 20:07:26
X,Y,Z和T的类型是什么? – Bill 2010-12-21 20:30:39
不是功课。需要快速回答工作。谢谢你们.. – ntsue 2010-12-22 04:09:34