【发布时间】:2013-02-16 18:15:53
【问题描述】:
我有一段代码如下:
if(a < b)
{
x = y;
return w;
}
/* all unrelated variables above*/
x = something;
y = something;
/*both x and y from above*/
x 和 y 是全局变量,在 if 部分修改,我需要将 y 赋值给 x 然后返回 w,或者只是一个常量。
我需要使用三元运算符来替换 if 部分:
我尝试了以下方法:
return (((a < b) ? (x = y, w) : 1), (x = something, y = something));
但是,我似乎没有得到想要的结果。我知道这是错误的。这是因为我使用了源自类似表达式的return,即:
if(x < y)
return (x = y);
return 1;
我写的是:
return ((x < y) ? x = y : 1);
但是,我如何返回一个值,这涉及在三元运算符中预先分配一个完全不同的变量?
【问题讨论】:
-
我需要计算 x = y,然后返回 w,而不是 if,即使用 ?:
-
如果
!(a<b),你想返回什么? -
一个变量 w,或者只是一个常数。
-
x 和 y 是全局变量,在 if 部分内部修改。
-
第一个代码的
if-free 版本是:return (a < b) ? ((x = y), w) : (x = something, y = something, /*whatever you want your return value to be*/);
标签: c++ c return ternary-operator conditional-operator