我想将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。 (当一个条件被*测试*时,任何非零值为真。) –