簡體   English   中英

條件運算符錯誤

[英]Conditional operators error

我很難理解為什么以下代碼部分返回x而不是b。

#include <iostream>

using namespace std;

int main()
{
    int x = 12;
    int a = 1;
    int b = 0;

    cout << "answer: " << (x < a && 1 ? a : (x > b && 0 ? b : x)) << endl;
    return 0;
}

我的工作是:

  • x不低於[邏輯和] 1,移至第二組括號。

  • x IS大於0 [對數和] 0,因此結果應為'b'。

    (由於兩個語句都等於true,因此Result_if_true語句不應該作為輸出嗎?)

x > b && 0 並不意味着“x大於b和0大”。

相反,它的意思是:“ x大於b,0是真實的語句”。 &&運算符是連接兩個語句的邏輯AND。 您不能以自然語言使用“和”一詞的寬松方式來使用它。

(x < a && 1 ? a : (x > b && 0 ? b : x))

被解析為

((x < a) && 1) ? a : (((x > b) && 0) ? b : x)

這與

(false && true) ? a : ((true && false) ? b : x)

false ? a : (false ? b : x)

x

在這個表達中

(x < a && 1 ? a : (x > b && 0 ? b : x)) 

首先有評估條件

x < a && 1

因為x不小於a,所以它等於false

因此,將要計算的下一個表達式是

(x > b && 0 ? b : x)

在這種表達條件下

x > b && 0

顯然等於false

所以整個表達式的值就是子表達式的值

x

並會輸出

answer: 12

您的邏輯錯誤是該表達

x > b && 0

不等於

( x > b ) && ( x > 0 )

它等效於

( x > b ) && ( 0 )

作為表達

( 0 )

等於false然后

( x > b ) && ( 0 )

等於false

暫無
暫無

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

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