我正在阅读“让我们C”这本书,并且以下代码已被证明是完全正确的:
for ( i < 4 ; j = 5 ; j = 0 )
printf ( "%d", i ) ;
但是在Turbo C中它提出了3个警告:
代码无效。可能是错误的分配。 'j'被分配了一个 永远不会使用的价值。
答案 0 :(得分:2)
如果本书指出C标准允许使用此代码,那么它是正确的。此代码不违反C标准的任何规则,前提是i
和j
之前已被正确声明(并且printf
也包含#include <stdio.h>
)。
但是,实际上没有人会编写这样的代码,因为它没用。这就是编译器发出警告的原因,因为代码在技术上是允许的,但可能不是程序员想要的。
如果这本书声称这段代码在某种程度上有用,那么它可能是一个印刷错误。这当然是错的。如果这本书有很多这样的错误,你应该丢弃它。
答案 1 :(得分:1)
我不知道你的书想用这个例子教你什么,但AFAIK for for循环应该总是以
的形式for ( init; check; next ) {
/* do something */
}
其中 init 初始化您要使用的内容,检查检查是否应该停止或继续 next 执行某种操作。它与
相同init;
while ( check ) {
/* do something */
next;
}
因此您收到警告,因为:
本书想要做的是 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.可能输出总是相同的数字。