私は多様な関数と引数についていくつかの研究をしています。va_argでの鋳造方法
私は、va_argがオブジェクトを他のオブジェクトにキャストできることに気付きました。
ファンクションコール:
AddNumbers(3, 5, 'a', 20);
関数宣言:
次の引数がchar
ですが、それは
int
する必要がありますようにあなたが
va_arg
を使用している場合例えば、それは
char
int
へのキャスト
int AddNumbers(int count, ...) {
int result;
va_list va;
va_start(va, count);
for(int i = 0; i < count; ++i) {
result += va_arg(va, int);
}
return result;
}
私の質問は:どのような種類のキャスト(Cスタイル、ダイナミックキャストなど)ですか?
可変引数をintに昇格する必要があることをどのように知っていますか? –
@MZeinstra - コンパイラにはルールが組み込まれています。可変長関数に渡されると 'char'式が' int'に昇格します – StoryTeller
@StoryTellerクラスについてはどうですか?それらはコンパイラに焼き付けることはできません。 –