[英][C]Can I call va_arg with a larger type than the argument, then cast the value?
我想知道這是否是有效的代碼:
int a(va_list args, int is_int, ...)
{
long long n = va_arg(args, long long);
return (is_int ? ((int)n) : n);
}
void b(va_list args)
{
int x = -100;
a(args, 1, x);
}
我寫了一些不必要的復雜代碼,犯了錯誤,我覺得這是修正我所做的事情的最簡單方法,而無需重寫整個過程,但是我不知道這是否會導致錯誤(或段錯誤,或者是其他東西)。
不,問題不僅限於大小。 如果類型不匹配,則整個程序的行為是不確定的。 當傳遞的實際值適合任一正負號時,有一些非常有限的例外,例如正負號不匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.