use*_*573 4 c c++ variadic-functions
我使用va_list时遇到问题.以下代码适用于int:
main() {
int f1=1;
float** m = function(n,f1);
}
float** function(int n,...) {
va_list mem_list;
va_start(mem_list, n);
for (int i=0;i<n;i++) {
for (int j=0;j<n;j++) {
//m[i][j]=va_arg(mem_list,float);
int f = va_arg(mem_list,int);
printf("%i \n",f);
}
}
va_end(mem_list);
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我改为浮动即
float f1=1.0;
float f = va_arg(mem_list,float);
printf("%f \n",f);
Run Code Online (Sandbox Code Playgroud)
它不返回正确的值(值为0.00000).我对发生的事情感到非常困惑.
在varargs调用的上下文中,float
实际上是提升为double
.因此,你需要实际上拉double
出来,而不是float
s.这是同样的原因,%f
对printf()
与这两部作品float
和double
.
归档时间: |
|
查看次数: |
1204 次 |
最近记录: |