Way of casting in va_arg
<p>I'm doing some research about variadic functions and arguments.</p>

<p>I noticed that va_arg is able to cast objects into other objects. For example, when the next argument is a <code>char</code>, but you are using <code>va_arg</code> like it should be an <code>int</code>, it casts the <code>char</code> to an <code>int</code>:</p>

<p>Function call:</p>

<pre><code>AddNumbers(3, 5, 'a', 20);
</code></pre>

<p>Function declaration:</p>

<pre><code>int AddNumbers(int count, ...) {
    int result;

    va_list va;
    va_start(va, count);
    for(int i = 0; i &lt; count; ++i) {
        result += va_arg(va, int);
    }
    return result;
}
</code></pre>

<p>So my question is: what kind of casting does this function use (C-style, dynamic_cast, etc.)?</p>