While循环提前结束

While loop ends prematurely

本文关键字:结束 循环 While      更新时间:2023-10-16

我在阅读c++教程时正在尝试"while"循环。令人惊讶的是,下面的循环总是在第二次迭代时退出,尽管我给出了负整数。

while(int sz = get_size() && sz <= 0) ;

下面是使用的get_size()。

int get_size() {
  int a = 0;
  cin >> a;
  return a;
}

您的问题是该语句相当于

while(int sz = (get_size() && sz <= 0)) ;

这对于第一次迭代来说是未定义的行为,因为sz是未初始化的。
一个解决方案是将声明移出循环。

int sz;
while((sz = get_size()) && sz <= 0) ;