私はCの初心者ですが、今日、何時間も困惑する問題に遭遇し、問題が発生した条項を差し引きました。
でコンパイルしましたArchlinux(gcc)
。
#include <stdio.h>
#define SIZE 10
int main()
{
char s[SIZE];
int i;
for (i = 0; i < SIZE; )
s[i++] = 'm';
s[i++] = '\n';
s[i] = '\0';
printf("%s/D\n", s, i);
return 0;
}
エラーなしで動作しました。
出力はmmmmmmmmmm11です。
1行を削除します。s[i++] = '\n'
;
#include <stdio.h>
#define SIZE 10
int main()
{
char s[SIZE];
int i;
for (i = 0; i < SIZE; )
s[i++] = 'm';
s[i] = '\0';
printf("%s %d\n", s, i);
return 0;
}
「i」は0になりました。出力:mmmmmmmmmm 0
しかし、一度Cent OS(gcc)でコンパイルされました。
「i」は0になりませんでした。
に戻るArchlinux
。別の行に入りました。int a = i", to reference i;
#include <stdio.h>
#define SIZE 10
int main()
{
char s[SIZE];
int i;
for (i = 0; i < SIZE; )
s[i++] = 'm';
s[i] = '\0';
int a = i;
printf("%s/D\n", s, i);
return 0;
}
そして今回は「i」は0になりませんでした。
私は初心者です、誰かが何が起こっていたのか教えてください。
これが私が犯した愚かな間違いである場合は、私に知らせてください。投稿を削除します。
ありがとう!