c - 仅循环迭代一半元素

标签 c loops for-loop srand

这是我的代码。我的问题是,为什么它只打印 5 个数字?为什么它不能像预期那样打印 10?

   #include<stdio.h>
   #include<stdlib.h>
   #include<time.h>

   int main(){

   int r, col;

   srand((unsigned)time(NULL));

   for (col=1; col<=10; col++){

   r = rand() % 11;
   printf("%d\n", r);
   col++;

   }
  return 0;
  }

最佳答案

因为,您正在执行 col++ 两次,一次在循环体中,一次在循环后语句中。

for (col=1; col<=10; col++)   //...................(i)
                    ^^^^^^^

r = rand() % 11;
printf("%d\n", r);
col++;                       //.....................(ii)
^^^^^

因此,对于单次迭代,col 会增加两次,迭代计数会减半。

删除任一语句。

关于c - 仅循环迭代一半元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37964472/

相关文章:

java - java中的else循环

javascript - 我怎样才能退出循环?

c - 所有 POSIX/SUS 信号都是 #define 是给定的还是假设的?

c - 如何使用按位运算符连接 2 个数字,同时保持变量的初始值不变?

c - C 中的单链表(警告)

Java将for循环转换为lambda表达式

java - 使用 "pseudo operator"区分简单重复和一般 for 循环

c - 当我们进行结构类型转换时,到底发生了什么?

javascript - 迭代具有相同名称的对象属性

java - 构建 Java 小程序以使用循环绘制一系列房屋