相关疑难解决方法(0)

我可以在一行上写一个带有变量声明的if语句吗?

我想知道是否有办法把它放在一条线上?

if (auto r = getGlobalObjectByName(word)) r->doSomething; // This works fine

if (!auto r = getGlobalObjectByName(word)) r->doSomething; // Says "expected an expression"

if (auto r = getGlobalObjectByName(word) == false) r->doSomething; // Also doesn't work.
Run Code Online (Sandbox Code Playgroud)

我也尝试用额外的括号围绕它,但这似乎不起作用.我发现这在一条线上非常方便.

c++ if-statement

26
推荐指数
2
解决办法
4496
查看次数

如何在if语句中定义变量和比较值?

我有一个这样的代码片段:

if ((std::vector<int>::iterator iter = std::find(v.begin(), v.end(), i)) != v.end()) 
{
    // ....
}
Run Code Online (Sandbox Code Playgroud)

但是编译器抱怨这个语句。但是,将我的代码更改为

std::vector<int>::iterator iter;
if ((iter = std::find(v.begin(), v.end(), i)) != v.end()) 
{
    // ....
}
Run Code Online (Sandbox Code Playgroud)

解决了这个问题。

所以,我想知道为什么第一个版本不起作用,下面语句的返回值是什么?

std::vector<int>::iterator iter = std::find(v.begin(), v.end(), i)
Run Code Online (Sandbox Code Playgroud)

c++ variables syntax if-statement initialization

3
推荐指数
1
解决办法
125
查看次数

标签 统计

c++ ×2

if-statement ×2

initialization ×1

syntax ×1

variables ×1