[英]Which boolean expression gets evaluated first in an IF statement containing an OR operation?
在以下語句中,在VC ++中,哪個布爾表達式首先被求值? 另外,他們倆都得到評估了嗎?
if( (X==Y) || (Z==T))
{
//code here
}
從左到右評估它們,如果第一個為真,則表達式短路,而第二個不評估。
如果內置||
使用運算符,則將先計算X == Y
,然后再計算Z == T
。 內置||
運算符從左到右進行評估,並且短路,因此,如果X == Y
為true,則根據定義X == Y || Z == T
X == Y || Z == T
為真,因此不評估Z == T
。
但是, ||
操作員也可以過載,如果過載,也不會短路。 用戶定義的||
重載 選擇用於||
在這里,即使X == Y
為true,也將同時評估X == Y
和Z == T
。 ||
很少 操作符重載,因為它可能導致代碼不直觀。 重要的是要記住,它的行為與內置運算符的行為不同。
從左到右的第一個表達式將始終被求值(在這種情況下(X==Y)
),僅在第一個表達式為false的情況下,才將求第二個表達式(從左到右,在這種情況下(Z==T)
) 。 這稱為短路評估 。
X == Y將首先被評估。 如果為true且由於條件為OR,則不會評估該行上的其他任何內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.