首页 > 解决方案 > C ++分配并签入一行?

问题描述

我有一个返回随机数的函数 my_fun。

如何在一行中进行申报和价值检查?

int x;
  1. if (x= my_fun()<0)

  2. if ((x= my_fun())<0)

  3. if ((x= my_fun()<0)) // this is what my IDE suggests but looks strange since those extra braces don't help at all.

标签: c++assign

解决方案


我同意@Bas 和@Jeffrey 的评论,更喜欢分两行来做。但是,在 C++17 中,您可以这样做


if (int x = my_func(); x < 0) {
 // Do stuff
}

要解释您的选项之间的区别:

  • 选项 1) 和 3) :x将具有表达式的值,my_fun() < 0而不是返回的值my_fun()。它们基本相同,多余的括号没有说明。你也可以写(((( x = my_fun() < 0 ))))

  • 选项 2) :将分配返回的值 my_fun()tox然后 evaluate x < 0,这可能是您想要的。


推荐阅读