簡體   English   中英

為什么要用比 va_arg 中的第一個參數小的遞增數字來循環?

[英]Why should do the loop with an increasing number smaller than the first parameter in va_arg?

這個功能我差不多看懂了,但是看例子的時候就疑惑了。 為什么 For 語句會循環直到 i 小於 count?

int
add_em_up (int count,...)
{
  va_list ap;
  int i, sum;

  va_start (ap, count);         /* Initialize the argument list. */

  sum = 0;
  for (i = 0; i < count; i++)
    sum += va_arg (ap, int);    /* Get the next argument value. */

  va_end (ap);                  /* Clean up. */
  return sum;
}

int
main (void)
{
  /* This call prints 16. */
  printf ("%d\n", add_em_up (3, 5, 5, 6));

  /* This call prints 55. */
  printf ("%d\n", add_em_up (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));

  return 0;
}

我試圖通過查看各種解釋來理解這個概念,但這並不容易。 我知道第一個參數是列表的第一個參數。 這是第一個參數,為什么我們要在這里循環呢? 但為什么? 我想知道為什么! 請幫助我!

為什么 For 語句會循環直到i 小於 count?

它不會 - 它i 小於計數時循環。

好的,這是一個如此簡單的問題,像您這樣的專家一定感到困惑。 我正在實施 printf。 例如,實現了以下功能:

int printf(const char *str, ...) //funtion
printf("my name : %s \n my age : %d \n", "baby coder", 1);

const char: "我的名字:%s\n 我的年齡:%d\n" 參數:baby coder, 1

這就是為什么旋轉循環直到 'i' 小於 str 的數量......!

暫無
暫無

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

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