using namespace std;
class Counter
{
int val;
public:
Counter() { val = 0; }
int Next() { return ++val; }
};
int main()
{
Counter counter;
while (int c = counter.Next() <= 5)
{
cout << c << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
运行时,程序打印15 次。因此,.Next()当 while 循环终止时返回预期值。
为什么remain的值c设置为初始值?
我对 C++非常陌生(这是我编写的第一个 C++ 程序),我只是想了解 的返回值如何.Next()按预期进行评估,但未在c变量中捕获。
运算<=符的优先级高于运算符=。
所以,与
while (int c = counter.Next() <= 5)
Run Code Online (Sandbox Code Playgroud)
编译器将其解释为:
while (int c = (counter.Next() <= 5))
Run Code Online (Sandbox Code Playgroud)
它将逻辑表达式的结果赋给c,当表达式成立时,该结果将为 1。
试试这个:
int c;
while ((c = counter.Next()) <= 5)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |