簡體   English   中英

如何在具有多個條件的if語句中使用或運算符

[英]how to use or operator in if statement with more than one conditions

我希望是否有辦法在“if 語句”中,如果我們使用多個“或”運算符,我們可以將值分配給將在 if 語句中使用該特定條件的變量。

if(sum1>15 || sum2>15 || sum3 >15)
{
    // I want sum = sum1 if the first condition satisfies, 
    // sum=sum2 if the second ,
    // sum=sum3 if the third, instead of given code below.
}

if(sum1>15)
    sum=sum1
if(sum2>15)
    sum=sum2
if(sum3>15)
    sum=sum3

表達方式

sum3 > 15 && (sum = sum3, 1) || sum2 > 15 && (sum = sum2, 1) || sum1 > 15 && (sum = sum1, 1)

會這樣做,以混淆為代價(由於短路運算符中的賦值副作用,MISRA 禁止這種類型的事情)。 在這里,我利用&&||的短路特性 : 賦值僅在左側參數為 1 時發生。此外,賦值賦值表達式的值永遠不會為零。 (在您的特定情況下, , 1是多余的,但在那里,所以我們不依賴於 15 是正數的事實。)

換句話說,都相當片狀。 使用 3 if s 更清晰。

你可以這樣做:

sum = sum3>15 ? sum3 : (sum2>15 ? sum2 : (sum1>15 ? sum1 : sum));

括號是可選的。 他們只是為了更清楚地了解正在發生的事情。 但是,我肯定會推薦你的三個 if 聲明。

我希望是否有辦法在“if 語句”中,如果我們使用多個“或”運算符,我們可以將值分配給將在 if 語句中使用該特定條件的變量。

如果你不願意修改if語句,這是完全不可能的。 當您進入 if 語句的主體時,您唯一可以確定的是,整個條件的評估結果為真。

正確的解決方案幾乎肯定是使用循環重寫代碼:

int sum[n] = ... ;
int result = 0;

for(size_t i=0; i<n; i++)
{
  if(sum[i] > 15)
  {
    result = sum[i];
    break;
  }
}

暫無
暫無

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

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