第01問

次のプログラムで、配列に格納された整数値の合計を表示しようとしています。でも、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を使っている行に注目してみましょう。