ループは体を空にし、ヌルloop.Butを作成すると仮定されるための最後のセミコロンは、なぜこれが6セミコロンがループ本体を空にしていないのはなぜですか?
void main()
{
int i;
for(i=1;i<=5;i++);
{
printf("%d\n",i);
}
}
ループは体を空にし、ヌルloop.Butを作成すると仮定されるための最後のセミコロンは、なぜこれが6セミコロンがループ本体を空にしていないのはなぜですか?
void main()
{
int i;
for(i=1;i<=5;i++);
{
printf("%d\n",i);
}
}
を印刷していることは、ループi
の終わりにはなりis.at 6とprintf
がこれを行います。
ループ本体は、それ以外の場合は1
、2
、3
、4
、5
を印刷し、空です。しかし、ループヘッドはそれに反して実行され、各反復ではそれは増加する。i
。 6
に到達すると、<=5
ではないループが終了します。ループの後にi
を印刷するとi
が6
と表示されます。インクリメントi
はループの副作用です。
forループfor(i=1;i<=5;i++);
は、forループ本体がno-opであっても、iを1から6までインクリメントして、正確に5回実行します。したがって、ここで:
{
printf("%d\n",i);
}
プログラムは、それが6
あなたはnullをループの外int型を宣言しているので楽しい
#include <stdio.h>
int main(void)
{
int i;
for (i = 1; i <= 5; i++) /* void */;
/* floating block one */
{
int i = 42; /* new i, hides old i */
printf("%d\n",i);
}
/* floating block two */
{
printf("%d\n",i);
}
}
これを説明してください@pmg –
@Magnusこの空白を見てくださいmain() { int i;for(i = 1; i <= 5; i ++); { int i = 42; printf( "%d \ n"、i); } printf( "%d \ n"、i); } –
42 42が印刷されますが、印刷されます42 6 –
のためにこれを試してみてくださいで、i
の現在の値を表示します、値は増分ループの外に保存されます。
セミコロンがループを終了したために、余分な括弧は、ここに何もしません。
これは唯一知りたい、ありがとう –
それは非常に簡単です:
for(i=1;i<=5;i++);
が、私は= 6は、forループを終了し、1〜5 に、5回実行し、新しい文が実行され、 "スコープ" されます。
printf("%d\n",i);
ので、それは(何もしない)nullのループになりますが、それは6 `i`インクリメントんし、そのループは次のPRIを終了した後、6
を印刷しますnt文が実行される –
5の代わりに1つの番号しか印刷されなかったのか、本当にループを取得しなかったのかと聞きたがります。 – zubergu
セミコロン*で終わる空文がループ本体であると言う方がより正確でしょう。これはセミコロンの特別な場合や魔法の意味のようなものではありません。 * for *は何もしませんが、他の 'for'ループのようにあらゆる点で機能します。 –