次のプログラムで、配列に格納された整数値の合計を表示しようとしています。でも、1行だけ間違っているせいで正く動きません。
どこが間違っているのか分かりますか?
main.c
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int numbers[] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
-1
};
int nSum = 0;
int *pi = numbers;
while (*pi != -1) {
nSum += *pi;
pi += sizeof(int);
}
printf("Sum = %d\n", nSum);
return EXIT_SUCCESS;
}
期待される実行結果
Sum = 55
ええと、1〜10の合計を計算しようとしてるんですね。
でも、C言語にありがちな間違いがあるのよ。
ポインタ
pi
を使っている行に注目してみましょう。