nts*_*sue 0 c++ if-statement visual-c++
在下面的语句中,在VC++中,首先评估哪个布尔表达式?此外,他们都得到评估?
if( (X==Y) || (Z==T))
{
//code here
}
Run Code Online (Sandbox Code Playgroud)
如果使用内置||运算符,则X == Y在计算之前将对其进行Z == T求值.内置||运算符从左到右进行评估并且它是短路的,因此如果X == Y为真,则根据定义X == Y || Z == T为真,因此Z == T不进行评估.
但是,||操作员也可能过载,如果过载则不会短路.TF的用户定义的过载||被选择用于使用||此处,则两个X == Y和Z == T进行评价,即使X == Y是真实的.||操作符很少被过载,因为它可能导致不直观的代码.重要的是要记住它的行为与内置运算符的行为不同.