我一直想知道如何写在C++语言兼容的"A ? B : C"
语法。如何使用条件运算符?
我觉得它的工作原理是这样的:(伪代码)
If A > B
C = A
Else
C = B
将任何老将C++程序员,请帮我吗?
我一直想知道如何写在C++语言兼容的"A ? B : C"
语法。如何使用条件运算符?
我觉得它的工作原理是这样的:(伪代码)
If A > B
C = A
Else
C = B
将任何老将C++程序员,请帮我吗?
它的工作原理是这样的:
(condition) ? true-clause : false-clause
它赋值操作最常用的,但它有其他用途。三元运算符?
是缩短if-else子句的一种方法,在其他语言中也称为直接if语句(例如,VB中的IIf(condition,true-clause,false-clause)
)。
例如:
bool Three = SOME_VALUE;
int x = Three ? 3 : 0;
相同
bool Three = SOME_VALUE;
int x;
if (Three)
x = 3;
else
x = 0;
我假设你的意思的东西像A = B? c:d,其中b是条件,c是b为真时的值,d是b为假时的值。
在C++中,如果有这部分没有实际的。它被称为三元运算符。它的用法如下:<布尔语句>? <结果为真>:<结果如果为假>;对于你上面的例子就应该是这样的:
C = A > B ? A : B;
这篇文章在维基百科上还讨论了它: http://en.wikipedia.org/wiki/Ternary_operation
它的工作原理是这样的:
expression ? trueValue : falseValue
这基本上意味着,如果expression
求值为true,则trueValue将被返回或执行,否则将返回falsevalue或进行评估。
记住trueValue和falseValue将仅被评估并执行如果表达式分别是真还是假。这种行为称为短路。
我想说的?是一个捷径。然而,一些“硬核”程序员倾向于说长远来说,所以在未来的情况下,人们可以轻松读取和修改代码。
例如,如果你写
int a = b<c ? b : c;
一些人声称这是更清晰的写:
if(b<c)
a = b;
else
a = c;
因为在今后的案件中,人们可以抓住它。当然,一个简单的b < c? b:c很容易被捕获,但有时候会有复杂的操作,很难发现。
似乎没有人提到条件运算符表达式的结果可以是C++中的L值(但不是C)。下面的代码编译的C++和运行良好:
int a, b;
bool cond;
a=1; b=2; cond=true;
(cond? a : b) = 3;
cout << a << "," << b << endl;
上述程序打印3,2
然而,如果a和b是不同类型的,它不会工作。下面的代码给出了一个编译器错误:
int a;
double b;
bool cond;
a=1; b=2; cond=true;
(cond? a : b) = 3;
cout << a << "," << b << endl;
是很简单的 它的基本语法是: 表达式表达式2:表达式3;
如果表达式1成立,则表达式2将成立,否则成立表达式3成立。
例如:
hey=24>2?24:34;
这里作为条件是24位真值将被分配给它。 如果是假,则34将被分配给它
simply you can write this as
C =(A> B)A:B;
THIS IS SAME AS:
if(A>B)
C=A;
else
C=B;
此外,如果x是在你的例子用const int,三元版本将是编译的唯一选择。 – 2008-12-25 21:48:35
初始化三是不是更好? – 2008-12-26 07:41:40