我在阅读C ++教程时尝试“while”循环。令人惊讶的是,尽管我给出了负整数,但下面的循环总是在第二次迭代时退出。
while(int sz = get_size() && sz <= 0) ;
下面是使用的get_size()。
int get_size() {
int a = 0;
cin >> a;
return a;
}
答案 0 :(得分:22)
您的问题是该声明等同于
while(int sz = (get_size() && sz <= 0)) ;
对于第一次迭代,这将是未定义的行为,因为sz
未初始化
对此的解决方案是将声明移到循环之外。
int sz;
while((sz = get_size()) && sz <= 0) ;