3

运算符<(小于)做什么?
另外,你能解释一下为什么for-loop结束了吗?

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

我得到的输出为

   21
   31
   41
   51
   60
4

3 回答 3

2

代码检查是否i小于 5,然后递增i。比较的结果存储在j.

制作这样的循环是一种相当晦涩的方法。不太可读。

于 2013-09-02T09:27:57.257 回答
0

当您的循环执行 i++ 时,它实际上是在增加 i 的值。条件 j= i++ < 5 将检查返回值 '1' 或 '0' 所以当相应地你的输出打印语句 printf ("%d%d\n", i,j) 将打印

我=2;j=2<5 -> 返回 1 所以打印 (2,1) i=3; j=3<5 -> 返回 1 所以打印 (3,1)

依此类推,直到条件变为假,您的输出最终为 j=return '0' for i=6

这会给你 ans (6,0)

于 2013-09-02T09:38:09.527 回答
0

1如果i小于 5 则返回,否则返回0。请注意,在下一次循环迭代之前,增量不会影响比较。

于 2013-09-02T09:27:14.800 回答