nou*_*fal 0 c c++ arrays printf for-loop
以下代码是我编写的,用于测试我对使用for-loopin的理解,特别是在其中C使用赋值语句for-loop.但在这里我得到了意想不到的输出.为什么不分配0给前10个元素array?
如果我将数组声明为而不是?
为什么它根本不打印?谁能解释一下?arrayarray[10]array[11]
#include <stdio.h>
int main() {
int i, array[11]; //array[10]
for (i = 0; ((i < 10) || (array[i] = 0)); ++i);
for (i = 0; ((i < 10) && (printf("%d\n", array[i]))); ++i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
((i < 10) || (array[i] = 0))
Run Code Online (Sandbox Code Playgroud)
这||是懒惰的,只要i < 10表达式会短路,甚至不会评估赋值.
改变循环的显而易见的方法是:
for (i = 0; i < 10; ++i)
array[i] = 0;
Run Code Online (Sandbox Code Playgroud)
...它更具可读性,完全符合您的要求.