变量函数(va_arg)不适用于float?

前端之家收集整理的这篇文章主要介绍了变量函数(va_arg)不适用于float?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个变量函数,它接受一个float参数.为什么不起作用?
va_arg(arg,float)

解决方法

对应于…的函数参数在传递给您的可变函数之前被提升. char和short被提升为int,float被提升为double等.

6.5.2.2.7 The ellipsis notation in a function prototype declarator causes
argument type conversion to stop after the last declared parameter. The default argument
promotions are performed on trailing arguments.

原因是C的早期版本没有函数原型;参数类型在函数站点被声明,但在呼叫站点不知道.但不同的类型表示不同,传递参数的表示必须与被调用函数的期望相匹配.因此,char和short值可以传递给具有int参数的函数,或者可以将float值传递给具有双参数的函数,编译器将“较小的类型”升级为较大类型.当在调用站点不知道参数的类型 – 即对于没有原型声明的可变函数函数(例如,int foo();),仍然会看到此行为.

原文链接:https://www.f2er.com/css/216540.html

猜你在找的CSS相关文章