gpt4 book ai didi

c++ - 我可以依赖 bool 表达式中的逗号运算符吗

转载 作者:行者123 更新时间:2023-11-30 02:17:19 31 4
gpt4 key购买 nike

void test()
{
string s = " ,";
if (boost::trim_if(s, boost::is_any_of(" ,")), s.empty())
{
cout << "empty";
}
else
{
cout << s << endl;
}
}

根据这个How does the Comma Operator work ,表达式应该等于返回 void 的 boost::trim_if()。但它现在可以工作了,所以它执行了 boost::trim_if() 和 s.empty()。我可以依靠这种表达方式吗?

你也许会说我应该这样写代码:

boost::trim_if(s, boost::is_any_of(" ,"));
if (s.empty())
{
cout << "empty";
}

但我的情况是我们的旧代码是

string s;
if(FAILED(GetStringFromAPI(s)) || s.empty() )
{
}

我只想修改一行

if(FAILED(GetStringFromAPI(s)) || (boost::trim_if(...), s.empty()) )
{
}

最佳答案

是的,这完全可以使用。 cppreference says this (强调我的):

In a comma expression E1, E2, the expression E1 is evaluated, its result is discarded (although if it has class type, it won't be destroyed until the end of the containing full expression), and its side effects are completed before evaluation of the expression E2 begins

请注意,与其他运算符一样,逗号运算符可以被覆盖,在这种情况下,上述情况可能不成立。

关于c++ - 我可以依赖 bool 表达式中的逗号运算符吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53773049/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com