私はCで関数を持っています:
int concanatedProduct(int n, int x, int size)
{
char numberString[10];
long arr[size];
int cnt = 0;
long product = 0;
int digit = n;
while (digit!=0) {
product = x * (digit % 10); // Multiply by last digit
arr[cnt] = product; // add to array
cnt++; // increment count
digit /= 10; // chop off last dig
}
for (int i=size-1; i>=0; i--) { // reverse the number to make it the right way
//printf("%ld", arr[i]);
sprintf(numberString, "%s%ld",numberString, arr[i]);
}
return atoi(numberString);
}
ループの外で使用すると正常に動作します。ただし、forループに入れようとすると、printfを含めない限り、SIGBARTエラーがスローされます。
これは機能します:
for (int i=1; i<10; i++) {
x = concanatedProduct(12, i, 2);
printf("%d\n", x);
}
これはエラーをスローします:
for (int i=1; i<10; i++) {
x = concanatedProduct(12, i, 2);
}
一体何が起こっているのですか?それは私を完全に困惑させました。