虽然循环过早结束

时间:2014-06-20 22:31:37

标签: c++

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

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

下面是使用的get_size()。

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

1 个答案:

答案 0 :(得分:22)

您的问题是该声明等同于

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

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

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