2017-10-10 56 views
-2

說我們有bool true = (P v Q) -> R定義布爾邏輯運算符(V,^,異或, - >,<->)

我將如何定義一個操作(或功能),從而使符號(V,^,異或, - >,< - >),會調用執行邏輯的函數嗎?

因此,例如:bool true = P v Q,會叫bool or(bool a, bool b)

+1

在一個字符串中,你需要一個解析器。在源代碼中,這在C++中不可行。 – Quentin

+0

目前還不清楚你在問什麼。你問你將如何實現一個函數,它將'bool true = P v Q'作爲一個字符串並解析它並決定調用'bool或(bool a,bool b)'?如果是這樣,它應該使用什麼值來調用'或'函數?它應該如何處理答案? – gurka

+0

你應該重載一個有效的操作符。但是,首先,你必須知道誰是c中有效的操作符,操作符'v'不是操作符,並且考慮到這一點:單詞'true'是一個保留字。檢查此鏈接:http://en.cppreference.com/w/cpp/language/operators –

回答

0

這是不可能在C++中定義任意綴操作符,你也可以不使用名稱true作爲變量名。

然而,C++已經提供||爲或,&&爲和,^!=爲XOR(對於bool S,它們是當量)和!爲不。如果你想要邏輯蘊涵,你最好使用!P || Q,如果你想要iff,你應該使用P == Q

+0

xor是'^'(只有一個插入符號) – gurka

+0

@gurka Huh,我認爲這也是一個非按位版本。我很少需要它,但我很驚訝它不存在。 –

+0

@DanielH,謝謝,我很瞭解邏輯,我只是​​認爲有一種方法可以不解析,而我並不知道。 – illia