我想將C++程序轉換爲C#。我遇到了如下一行陳述。C++ x = P> Q等效於C#
int X;
int P = 10;
int Q = 5;
X = P < Q;
如果X是一個布爾值,對我來說它是有意義的。但是X是一個整數。我想知道X的輸出是什麼。它可能是C++中非常基本的語法。對不起,我的無知。我在C#中的等效語句之後。任何建議表示讚賞。
由於
我想將C++程序轉換爲C#。我遇到了如下一行陳述。C++ x = P> Q等效於C#
int X;
int P = 10;
int Q = 5;
X = P < Q;
如果X是一個布爾值,對我來說它是有意義的。但是X是一個整數。我想知道X的輸出是什麼。它可能是C++中非常基本的語法。對不起,我的無知。我在C#中的等效語句之後。任何建議表示讚賞。
由於
在C#中的分配將不會被允許,因爲(你猜)的表達式P < Q
將是類型bool
。這個C#代碼將大致相當:
int X;
int P = 10;
int Q = 5;
X = (P < Q) ? 1 : 0;
布爾整數在C++ converion是:真是1,假爲0。在C#這種轉換doesen't存在。
int X;
int P = 10;
int Q = 5;
X = (P < Q)?(1):(0);
的X
的值將是1(0爲假,1(或任何非零INT)爲真)。
如果你想有一個布爾結果:
bool X = P < Q;
...如果你想要一個整數
int X = P < Q ? 1 : 0;
如前所述,這種轉換不會或明或暗地存在,但你可以使用Convert
類
int X;
int P = 10;
int Q = 5;
X = Convert.ToInt32(P < Q);
但使用一個bool
或X = P < Q? 1:0
是最好的。
謝謝。現在對我來說很有意義。如果我有陳述X = P =!Q,那麼X會給我一個1嗎? –
在C會給你一個非零值,是的。你可以像我那樣使用三元運算符在C#中實現這個結果。當然,你也可以將結果存儲在一個'bool'變量中,這個變量可能是或者可能不是你所追求的。 – cdhowie
C或C++中的結果是完美定義的。 <, <=, >> =,==和!=運算符在條件爲真時全部產生1,如果條件爲假則爲0。 (當一個條件被*測試*時,任何非零值爲真。) –