-1

私は本Let us Cに従っており、次のコードは完全に正しいことが示されています。

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

しかし、Turbo C では 3 つの警告が表示されます。

コードは無効です。割り当てが間違っている可能性があります。「j」には使用されない値が割り当てられています。

4

5 に答える 5

2

このコードがC標準で許可されていることを本が指摘している場合、それは正しいです。iこのコードは、とjが以前に正しく宣言されていれば (さらにprintfを含めて) 、C 標準の規則に違反していません#include <stdio.h>

ただし、このようなコードは役に立たないため、実際にこのようなコードを作成する人はいません。コードは技術的には許可されていますが、おそらくプログラマーが意図したものではないため、コンパイラが警告を発しているのはそのためです。

このコードが何らかの形で有用であると本が主張している場合、それはおそらくタイプミスです。それは確かに間違っています。その本にこのような間違いがいくつかある場合は、その本を破棄する必要があります。

于 2013-07-17T13:55:20.697 に答える
1

この例であなたの本が何を教えたいのかわかりませんが、私の知る限り、forループは常に次の形式でなければなりません

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

どこでinit使用するものを初期化し、停止するか続行するかを確認し、次に何らかのアクションを実行します。と同じです

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

したがって、次の理由で警告が表示されます。

  • コードはi < 4を参照すると効果がありません。while形式でわかるように、この比較はまったく使用されないため、効果はありません。
  • 割り当てが間違っている可能性があります。j = 5に参照されます。これは、代入魔女のチェックを行っているためです。常に代入された値 (この場合は 5) に評価されます。
  • 'j' には、この例で 'i' を表示しているように、'j' は決して使用されないという意味で、決して使用されない値が割り当てられます。

おそらく本がやりたいことはfor ( i = 5; i < 5; i++ )です。そして、おそらくあなたがしなければならないことは、より良い本を使うことです.

于 2013-07-17T14:06:41.810 に答える
0

これは有効な C コードですが、ほとんど意味がありません。これにより、ループが適切に初期化されず、無限ループがトリガーされます。ループは次のようになります

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

最初のステートメントは初期化子で、2 番目のステートメントは終了ケースを規定し、最後のステートメントはインクリメントです。私はその本を捨てるだろう

于 2013-07-17T13:54:05.250 に答える
0

これをチェックしてください。

int i=0;
for(i=0;i<5;i++)
{
    printf("%d",i);
}
于 2013-07-17T13:56:16.053 に答える
0

これは正しいが無限ループです。for ループをインスタンス化する正しい方法は次のとおりです。

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

あなたが書いたコードは無意味であり、そのコードでは何もできません。実際には、変更されないため、i 無限時間の値が出力されます。i についてわかっていることは 4 より小さいことだけです。おそらく、出力は常に同じ数値です。

于 2013-07-17T13:58:59.253 に答える