簡體   English   中英

哪個布爾表達式首先在包含OR操作的IF語句中求值?

[英]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 == YZ == T ||很少 操作符重載,因為它可能導致代碼不直觀。 重要的是要記住,它的行為與內置運算符的行為不同。

從左到右的第一個表達式將始終被求值(在這種情況下(X==Y) ),僅在第一個表達式為false的情況下,才將求第二個表達式(從左到右,在這種情況下(Z==T) ) 。 這稱為短路評估

X == Y將首先被評估。 如果為true且由於條件為OR,則不會評估該行上的其他任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM