Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      va_arg

      From cppreference.com
      <c‎ |variadic
       
       
       
      Defined in header<stdarg.h>
      T va_arg( va_list ap, T);

      Theva_arg macro expands to an expression of typeT that corresponds to the next parameter from theva_listap.

      Prior to callingva_arg,ap must be initialized by a call to eitherva_start orva_copy, with no intervening call tova_end. Each invocation of theva_arg macro modifiesap to point to the next variable argument.

      If the type of the next argument inap (after promotions) is notcompatible withT, the behavior is undefined, unless:

      • one type is a signed integer type, the other type is the corresponding unsigned integer type, and the value is representable in both types; or
      • one type is pointer tovoid and the other is a pointer to a character type.

      Ifva_arg is called when there are no more arguments inap, the behavior is undefined.

      Contents

      [edit]Parameters

      ap - an instance of theva_list type
      T - the type of the next parameter inap

      [edit]Expanded value

      the next variable parameter inap

      [edit]Example

      Run this code
      #include <math.h>#include <stdarg.h>#include <stdio.h> double stddev(int count, ...){double sum=0;double sum_sq=0;    va_list args;    va_start(args, count);for(int i=0; i< count;++i){double num= va_arg(args,double);        sum+= num;        sum_sq+= num*num;}    va_end(args);returnsqrt(sum_sq/ count-(sum/ count)*(sum/ count));} int main(void){printf("%f\n", stddev(4,25.0,27.3,26.9,25.7));}

      Output:

      0.920258

      [edit]References

      • C23 standard (ISO/IEC 9899:2024):
      • 7.16.2.2 The va_arg macro (p: TBD)
      • C17 standard (ISO/IEC 9899:2018):
      • 7.16.1.1 The va_arg macro (p: TBD)
      • C11 standard (ISO/IEC 9899:2011):
      • 7.16.1.1 The va_arg macro (p: 269-270)
      • C99 standard (ISO/IEC 9899:1999):
      • 7.15.1.1 The va_arg macro (p: 249-250)
      • C89/C90 standard (ISO/IEC 9899:1990):
      • 4.8.1.2 The va_arg macro

      [edit]See also

      (C99)
      makes a copy of the variadic function arguments
      (function macro)[edit]
      ends traversal of the variadic function arguments
      (function macro)[edit]
      holds the information needed byva_start,va_arg,va_end, andva_copy
      (typedef)[edit]
      enables access to variadic function arguments
      (function macro)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/variadic/va_arg&oldid=179734"

      [8]ページ先頭

      ©2009-2025 Movatter.jp