我正在关注 Let us C 这本书,并且以下代码已被证明是完全正确的:
for ( i < 4 ; j = 5 ; j = 0 )
printf ( "%d", i ) ;
但在 Turbo C 中,它给出了 3 个警告:
代码没有效果。可能分配不正确。'j' 被分配了一个从未使用过的值。
如果这本书指出 C 标准允许此代码,那么它是正确的。此代码不违反 C 标准的任何规则,前提是i
并且j
之前已正确声明(并且printf
也已通过包含#include <stdio.h>
)。
但是,实际上没有人会编写这样的代码,因为它没有用处。这就是编译器发出警告的原因,因为代码在技术上是允许的,但可能不是程序员想要的。
如果这本书声称这段代码在某些方面有用,那么它可能是一个印刷错误。这肯定是错误的。如果这本书有很多这样的错误,你应该丢弃它。
我不知道你的书想用这个例子教你什么,但是 AFAIK 的 for 循环应该始终采用以下形式
for ( init; check; next ) {
/* do something */
}
init在哪里初始化你要使用的东西,检查它是否应该停止或继续,然后执行某种操作。它与
init;
while ( check ) {
/* do something */
next;
}
因此,您收到警告是因为:
这本书想要做的可能是(i = 5; i < 5; i++)。也许你需要做的是使用一本更好的书。
它是有效的 C 代码,但几乎毫无意义。这不会正确初始化循环并触发无限循环。循环看起来像
for (i = 0; i < 10; i++)
第一条语句是初始化器,第二条规定结束情况,最后一条是增量。我会摆脱那本书
看一下这个。
int i=0;
for(i=0;i<5;i++)
{
printf("%d",i);
}
这是一个正确但无限的循环,实例化 for 循环的正确方法是
int i ;
for(i = 0; i< [variable or number];i++){
printf("%d",i);
}
你写的代码是没有意义的,你不能用那个代码做任何事情,实际上它打印了 i 无限时间的值,因为它永远不会改变。我们唯一知道的 i 小于 4。可能输出总是相同的数字。