[英]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.