不同编译器下,输出结果不一样
代码:求模式T的next()值
#include "stdio.h"
void get_next(char T[], int next[],int n) {
int i=-1,j=0;
next[0]=-1;
while (j<n){
if (i==-1|| T[i]==T[j]) {++i;++j;next[j]=i;}
else i=next[i];
}i=0;j=0;
while (i<n){printf("%c\t",T[i]);++i;}
printf("\n");
while (j<n){printf("%d\t",next[j]);++j;}
}
int main() {
char S[] = "abdjjebdnjdjiejdhgxyudhshjsudugeggduhdbheudhjeidg", T[] =
"hadhadhhah";
int a=0,b=0,next[sizeof (T)-1];
for (int i = 0; S[i] != '\0'; i++) {
printf("%c", S[i]);
++a;
}
printf("\n");
for (int i = 0; T[i] != '\0'; i++) {
printf("%c", T[i]);
++b;
}
printf("\n");
get_next(T,next,b);
}
GCC和G++编译器为什么输出的模式字符串前四个数组元素变成整型了?
TCC编译输出没问题
就算编译器是有差别的,可是我想不通字符数组的前四项在哪被改变了。。
求问
有链接给发一下。。