[英]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.