2011-08-09 52 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是最好的。