我是一个 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;
}
它工作没有错误。
输出为mmmmmmmmmm 11。
删除了一条线。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。
我是新手,有大神告诉我这是怎么回事?
如果这只是我犯的一些愚蠢的错误,请告诉我,我将删除该帖子。
谢谢!