main()
{
char s[ ]="man";
int i;
for(i=0;s[ i ];i++)
printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]);
}
for ループの s[i] の意味は何ですか?
main()
{
char s[ ]="man";
int i;
for(i=0;s[ i ];i++)
printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]);
}
for ループの s[i] の意味は何ですか?
一度i
3 に達するs[i]
と\0
、ループが終了します。
char s[]="man";
次の配列が生成されることを思い出してください。
char s[] = {'m', 'a', 'n', '\0'};
これが、制御ステートメントがループを終了させる原因となるs[3]
a に評価される理由です。'\0'
これは foor ループの述語であり、自動的にブール値に変換されます。それは書くようなものs[i] != '\0'
です。C 文字列はゼロで終了します。
s[i]
ループは、ゼロ以外の値に評価される限り続行されます。C 文字列はヌル (= ゼロ) で終了するため、すべての文字列が検査されるまでfor
ループが増加します。i
s
どの for ループでも、真ん中のステートメントはループの条件ですが、それは true ですが、ループ自体はループし続けます。あなたのステートメントの反対(たとえば)は、ループがfalseのfor(i=0;!s[ i ];i++)
間だけ繰り返されることを意味します。s[i]
もう一つの例:
for(i = 0; i <= 10; i++);
i
このループはが 10 以下である
限り繰り返されるため、10 まで数えて i がインクリメントするたびにアクションを実行する簡単な方法になります。
forループの条件です。
C では、NULL,'\0',0 以外の値はすべて true として評価されます。したがって、s[i] が '\0' を取らない限り、true と評価されます。