Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 三值运算符默认值_C++_Ternary Operator_Clamp - Fatal编程技术网

C++ 三值运算符默认值

C++ 三值运算符默认值,c++,ternary-operator,clamp,C++,Ternary Operator,Clamp,我想知道一点关于三元运算符的情况,主要是在C++中,但我认为它也可能适用于其他语言 我遇到的问题的最好例子(或者我应该称之为问题?我想这是一个概念问题。)是夹紧值 float clamped = (x<0.3) : 0.3 ? x; 在我看来,这就是它失控的地方,我会重写它: float clamped = (1.f - x + my_function()); if (clamped > .2f) clamped = .2f; 这引出了两个问题 1:是否存在默认行为,这样

我想知道一点关于三元运算符的情况,主要是在
C++
中,但我认为它也可能适用于其他语言

我遇到的问题的最好例子(或者我应该称之为问题?我想这是一个概念问题。)是夹紧值

float clamped = (x<0.3) : 0.3 ? x;
在我看来,这就是它失控的地方,我会重写它:

float clamped = (1.f - x + my_function());
if (clamped > .2f)
    clamped = .2f;
这引出了两个问题

1:是否存在默认行为,这样我就可以在类似于:
float-clipped=(1.f-x+my_-function())>.2f:.2f的伪代码中说“如果为真,就这样做,否则就照它说的做”了**违约**

2:如果我仍然使用第一种方法,它会首先计算条件吗?如果它是
false
,则执行另一种计算以从
(1.f-x+my_function())
中获取值


希望其中有一些是有意义的,这是我到目前为止还没有理解的东西。

您可以使用max函数来实现:

float clamped = max(1.f - x + my_function(), .2f);

您可以使用max函数来执行以下操作:

float clamped = max(1.f - x + my_function(), .2f);
怎么样

float v;
float processed = (v = expr) > 0.f ? special_val : v;
?

或者更一般地说

type tmp;
type result = condition(tmp = expr) ? special_val : tmp;
怎么样

float v;
float processed = (v = expr) > 0.f ? special_val : v;
?

或者更一般地说

type tmp;
type result = condition(tmp = expr) ? special_val : tmp;

最大的问题是。。为什么我以前没有做过这种连接?谢谢你,这当然是真的。然而,在某些情况下,我可能希望类似地使用它,但是有一个
typea=(废话):x?废话
where
min/max
不能解决这个问题,但仍然非常感谢+1(但是与OP的实际代码相对应的函数是
min
)@qrikko是您的通用示例:只需将第二个
blah
替换为
true
。(但这只是针对这个特定的例子。)@James这不是
错误吗?但我认为他的意思是类似于
typea=(条件(废话)):x?废话
最大的问题是。。为什么我以前没有做过这种连接?谢谢你,这当然是真的。然而,在某些情况下,我可能希望类似地使用它,但是有一个
typea=(废话):x?废话
where
min/max
不能解决这个问题,但仍然非常感谢+1(但是与OP的实际代码相对应的函数是
min
)@qrikko是您的通用示例:只需将第二个
blah
替换为
true
。(但这只是针对这个特定的例子。)@James这不是
错误吗?但我认为他的意思是类似于
typea=(条件(废话)):x?废话