2011-08-09 84 views
1

我想將C++程序轉換爲C#。我遇到了如下一行陳述。C++ x = P> Q等效於C#

int X; 
int P = 10; 
int Q = 5; 

X = P < Q; 

如果X是一個布爾值,對我來說它是有意義的。但是X是一個整數。我想知道X的輸出是什麼。它可能是C++中非常基本的語法。對不起,我的無知。我在C#中的等效語句之後。任何建議表示讚賞。

由於

回答

4

在C#中的分配將不會被允許,因爲(你猜)的表達式P < Q將是類型bool。這個C#代碼將大致相當:

int X; 
int P = 10; 
int Q = 5; 

X = (P < Q) ? 1 : 0; 
+0

謝謝。現在對我來說很有意義。如果我有陳述X = P =!Q,那麼X會給我一個1嗎? –

+0

在C會給你一個非零值,是的。你可以像我那樣使用三元運算符在C#中實現這個結果。當然,你也可以將結果存儲在一個'bool'變量中,這個變量可能是或者可能不是你所追求的。 – cdhowie

+0

C或C++中的結果是完美定義的。 <, <=, >> =,==和!=運算符在條件爲真時全部產生1,如果條件爲假則爲0。 (當一個條件被*測試*時,任何非零值爲真。) –

2

布爾整數在C++ converion是:真是1,假爲0。在C#這種轉換doesen't存在。

int X; 
int P = 10; 
int Q = 5; 

X = (P < Q)?(1):(0); 
0

X的值將是1(0爲假,1(或任何非零INT)爲真)。

3

如果你想有一個布爾結果:

bool X = P < Q; 

...如果你想要一個整數

int X = P < Q ? 1 : 0; 
1

如前所述,這種轉換不會或明或暗地存在,但你可以使用Convert

int X; 
int P = 10; 
int Q = 5; 

X = Convert.ToInt32(P < Q); 

但使用一個boolX = P < Q? 1:0是最好的。