c - 这个 for 循环在 C 中做什么?

标签 c loops for-loop conditional-statements

#include <stdio.h>

int main(void) {    
    int i= 1, j = 1;
    for (; j; printf("%d  %d",i, j))
        j = i++ <= 5;
    return 0;
}

输出-

2  13  14  15  16  17  0

谁能解释一下循环内发生了什么?这个问题是面试过程中被问到的。

最佳答案

代码相当于:

int main(void) {    
  int i=1,j=1;
  while (j != 0) {
    j = (i<=5);
    i = i+1;
    printf("%d  %d",i,j);
  }
  return 0;
}

我认为它的意义和输出现在已经很明显了。请注意,printf 不会在第二个数字之后打印任何分隔符。这意味着输出中的两位数字“数字”是通过两次连续调用 printf 打印的。如果您使用 printf("%d %d; ",i,j); 而不是 printf("%d %d",i,j); 输出将是:

2  1;  3  1;  4  1;  5  1;  6  1;  7  0;

关于c - 这个 for 循环在 C 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49107918/

相关文章:

c - 是否可以在 C 语言中执行 Kattis "Mixed Fractions Q"并且在 2 秒限制内

C++如何压缩花哨的for循环

C++ for 模板类的范围循环

c - C中这两个有什么区别?

java - AES rijndael 在 c 和 java 之间加密

c - 这个哈希函数是什么?

c - Visual Studio : Create a Hello World app in C?

arrays - 如何找到数组中 N 个元素的所有可能和?

python - 如何将循环应用于 python 中的多线程

javascript - Protractor 适合规范 DRY