相关疑难解决方法(0)

循环中i ++和++ i之间的区别?

是否有差异++i,并i++在一个for循环?它只是一个语法的东西吗?

language-agnostic for-loop pre-increment post-increment

294
推荐指数
10
解决办法
28万
查看次数

C++ 中 if 的奇怪行为

在我的工作中,我尝试使用这种结构:

if (repl && (repl = replaced.count(*l))) {
    // repl isn't used here 
    ...
}
Run Code Online (Sandbox Code Playgroud)

在我看来它的工作方式应该与

bool newRepl = replaced.count(*l);
if (repl && newRepl) {
    // repl isn't used here 
    ...
}
repl = newRepl;
Run Code Online (Sandbox Code Playgroud)

因为 中的表达式是&&从左到右求值的,但出乎意料的是它不是。
它是 C++ 中未指定的构造还是我没有正确理解它应该如何工作?

有问题的代码示例:

std::set<int> set{3, 4, 6};
bool repl = false;
for (size_t i = 3; i < 7; ++i) {
    if (repl && (repl = set.count(i))) {
        std::cout << "strangeif" << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

std::set<int> set{3, 4, 6}; …
Run Code Online (Sandbox Code Playgroud)

c++ if-statement

0
推荐指数
1
解决办法
94
查看次数