Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
而循环过早结束 我在阅读C++教程时正在尝试“while”循环。令人惊讶的是,下面的循环总是在第二次迭代时存在,尽管我给出了负整数 while(int sz = get_size() && sz <= 0) ;_C++ - Fatal编程技术网

而循环过早结束 我在阅读C++教程时正在尝试“while”循环。令人惊讶的是,下面的循环总是在第二次迭代时存在,尽管我给出了负整数 while(int sz = get_size() && sz <= 0) ;

而循环过早结束 我在阅读C++教程时正在尝试“while”循环。令人惊讶的是,下面的循环总是在第二次迭代时存在,尽管我给出了负整数 while(int sz = get_size() && sz <= 0) ;,c++,C++,你的问题是,这个陈述相当于 while(int sz = (get_size() && sz <= 0)) ; 粘贴代码时,while条件后的分号是打字错误还是真的有问题?@JosephMansfield,它是故意在那里完成while语句的。最好说明操作符的优先级。:)与之相反,for循环,而在条件中声明变量不是自定义的。(很少在特定任务中)@Dani,我怀疑这种解释是否有效,因为:sz需要先声明,然后才能与0进行比较。考虑到sz在每次迭代结束时都被破坏,我们如何评估sz

你的问题是,这个陈述相当于

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

粘贴代码时,
while
条件后的分号是打字错误还是真的有问题?@JosephMansfield,它是故意在那里完成while语句的。最好说明操作符的优先级。:)与之相反,
for
循环,而在条件中声明变量不是自定义的。(很少在特定任务中)@Dani,我怀疑这种解释是否有效,因为:sz需要先声明,然后才能与0进行比较。考虑到sz在每次迭代结束时都被破坏,我们如何评估sz@user3701346该解释是有效的。为什么它有效是另一个问题,不适用于此评论部分。@GSamaras它不完全是一个优先问题;带有声明符的
while
循环的语法规范基本上是
while
(声明符=不带逗号的表达式)。因此,
=
右侧的所有内容都是变量初始值设定项的一部分,而不管优先级如何。(碰巧没有区别,因为所有运算符的优先级都高于
=
(语法明确排除的逗号除外)。
while(int sz = (get_size() && sz <= 0)) ;
int sz;
while((sz = get_size()) && sz <= 0) ;