簡體   English   中英

總結命令行

[英]Summing the command line

非常簡單,我試圖將命令行中輸入的所有整數相加。 該和實際上有效,如果我使用“ 1 1 1 1”輸入啟動程序,該和將增加四倍。 問題在於總和被初始化為一個非常大的數字(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;
}

argv[0]可能是可執行文件的名稱。 從標准:

5.1.2.2.1程序啟動

....

如果argc的值大於零,則argv[0]指向的字符串表示程序名稱 如果程序名稱在主機環境中不可用,則argv[0][0]應為空字符。 如果argc的值大於1,則argv[1]指向的字符串
argv[argc-1]表示程序參數

嘗試

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

同樣,如@BLUEPIXY所示, %ld假定為long類型。 因此,要么將其更改為%d ,要么使用long sum

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM