0

非常に簡単ですが、コマンド ラインに入力されたすべての整数を合計しようとしています。合計は実際に機能します。「 1 1 1 1 」入力でプログラムを開始すると、合計は 1 ずつ 4 回増加します。問題は、合計が非常に大きな数 (4293283588) で初期化されることです。何故ですか?

int main(int argc, char*argv[])
{
  int a = 0;
  int sum = 0;
  size_t i = 0;

  for (i=0; i<argc; i++)
  {
     a = atoi(argv[i]);
     sum = sum + a;
     printf("%ld\n", sum);
  }

  return 0;
}
4

1 に答える 1

4

argv[0]おそらく実行可能ファイルの名前です。標準から:

5.1.2.2.1 プログラムの起動

....

の値がargc0 より大きい場合、 が指す文字列はプログラム名argv[0]を 表します。プログラム名がホスト環境から利用できない場合、ヌル文字になります。の値が1 より大きい場合、 ~ が指す文字列はプログラム パラメータを 表します。argv[0][0]argcargv[1]
argv[argc-1]

試す

for (i=1; i<argc; i++)

また、@BLUEPIXYが示すように、 %ldtype を想定していlongます。に変更するか%d、 を使用してlong sumください。

于 2014-09-29T00:31:33.173 に答える