Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么clang 3.8在使用带有%f printf格式说明符的float时发出警告?_C_Clang_Compiler Warnings - Fatal编程技术网

为什么clang 3.8在使用带有%f printf格式说明符的float时发出警告?

为什么clang 3.8在使用带有%f printf格式说明符的float时发出警告?,c,clang,compiler-warnings,C,Clang,Compiler Warnings,此代码: #include <stdio.h> int main(void) { float value = 10.10f; printf("%f\n",value); } printf()函数是一个可变的,或vararg函数;接受可变数量参数的人。 中定义printf()函数的方式如下: …表示此函数可以接受数量可变的参数 在变量函数中,如果向其传递float类型的变量,它将自动将其转换为double值;完成了从类型float到类型double的隐式转换 在代码中,除了%

此代码:

#include <stdio.h>
int main(void)
{
  float value = 10.10f;
  printf("%f\n",value);
}
printf()
函数是一个可变的,或vararg函数;接受可变数量参数的人。 中定义printf()函数的方式如下:

表示此函数可以接受数量可变的参数

在变量函数中,如果向其传递
float
类型的变量,它将自动将其转换为
double
值;完成了从类型
float
到类型
double
的隐式转换

在代码中,除了
%f\n“
参数外,还将浮点型变量
传递给
printf()
。因此,由于
printf()
是一个vararg函数,它将
value
转换为type
double
,然后将其作为参数传递。根据您将编译器的警告保持在多高的水平,它会向您发出该警告


希望这有帮助

因为在vararg函数中,好的,谢谢!你应该做出这样的评论作为回答。
clang -Weverything w-double-precision.c 
w-double-precision.c:5:17: warning: implicit conversion increases floating-point precision: 'float' to 'double' [-Wdouble-promotion]
  printf("%f\n",value);
  ~~~~~~        ^~~~~
1 warning generated. 
int printf( const char *format, ... );