C表示整数循环

时间:2013-07-17 13:44:44

标签: c for-loop

我正在阅读“让我们C”这本书,并且以下代码已被证明是完全正确的:

for ( i < 4 ; j = 5 ; j = 0 ) 
    printf ( "%d", i ) ; 

但是在Turbo C中它提出了3个警告:

  

代码无效。可能是错误的分配。 'j'被分配了一个   永远不会使用的价值。

5 个答案:

答案 0 :(得分:2)

如果本书指出C标准允许使用此代码,那么它是正确的。此代码不违反C标准的任何规则,前提是ij之前已被正确声明(并且printf也包含#include <stdio.h>)。

但是,实际上没有人会编写这样的代码,因为它没用。这就是编译器发出警告的原因,因为代码在技术上是允许的,但可能不是程序员想要的。

如果这本书声称这段代码在某种程度上有用,那么它可能是一个印刷错误。这当然是错的。如果这本书有很多这样的错误,你应该丢弃它。

答案 1 :(得分:1)

我不知道你的书想用这个例子教你什么,但AFAIK for for循环应该总是以

的形式
for ( init; check; next ) {
    /* do something */
}

其中 init 初始化您要使用的内容,检查检查是否应该停止或继续 next 执行某种操作。它与

相同
init;
while ( check ) {
    /* do something */
    next;
}

因此您收到警告,因为:

  • 代码无效被称为 i&lt; 4 。正如您在 while 表单中看到的那样,此比较不会以任何方式使用,因此它没有任何效果。
  • 可能是错误的分配。被判为 j = 5 因为你正在检查一个总是评估为分配值的分配(在这种情况下为5) )
  • 'j'被赋予一个从未使用过的值,因为它说'j'从不使用,因为你在这个例子中打印'i'。

本书想要做的是 for(i = 5; i&lt; 5; i ++)。 你可能需要做的就是使用更好的书。

答案 2 :(得分:0)

它是有效的C代码,但它几乎没有意义。这不会正确初始化循环并触发无限循环。循环看起来像

for (i = 0; i < 10; i++)

第一个语句是初始化程序,第二个语句是最终用例,最后一个是增量。我会摆脱那本书

答案 3 :(得分:0)

检查一下。

int i=0;
for(i=0;i<5;i++)
{
    printf("%d",i);
}

答案 4 :(得分:0)

这是一个正确但无限循环, 实例化for循环的正确方法是

int i ;
for(i = 0; i< [variable or number];i++){
printf("%d",i);
}

你编写的代码毫无意义,你无法对该代码做任何事情,实际上它会打印无限时间的价值,因为它永远不会改变。 我们对i的唯一了解就是少于4.可能输出总是相同的数字。