如何在if条件中声明变量?

时间:2016-04-23 13:21:03

标签: c++

假设我有一个函数MyFunction,它返回一个从0到10的值.0表示成功,非零表示失败。如果我想显示一个MessageBox,只有当它非零时我必须执行以下操作:

int e = MyFunction();
if (e != 0) { MessageBox(e); }

如果我想让变量int e是本地的而不会导致重新定义(因为我不善于命名或其他东西)我可以用花括号括起整个东西并像这样隔离变量:

int e;
{ int e = MyFunction(); if (e != 0) { MessageBox(e); } }

是否可以将其压缩为单个if语句,如下所示:

if (int e = MyFunction() != 0) { MessageBox(e); } //obviously does not work as intended

我知道如果语句不是真的以这种方式工作,但是有可能通过使用一些c ++魔术来实现吗?对你们这听起来可能微不足道,但我真的很想这样做。我做了搜索,也问过,但没有骰子。谢谢!

3 个答案:

答案 0 :(得分:6)

您的第二段代码是正确/正确/最佳/最清晰/最简单的方法。

不要试图太聪明。

答案 1 :(得分:6)

你可以这样做:

bool

这可行,因为if()自然会转换为e,因此当true非零值时,{{1}}会成功(或者如果它转换为{{1}} bool值。)

这样做的好处是,您不会使用错误返回值乱丢周围的范围。虽然对于某些程序员来说,将函数调用与测试分开可能并不是那么明显。

答案 2 :(得分:0)

不完全符合您的要求,但如果原因仅在记录中,您可以使用for代替if

for(int e = MyFunction(); e!=0; e=0) MessageBox(e);

但是我不确定是否有任何理由将正常的清晰代码替换为这样的语句。没人会推荐你这样的解决方案。