c语言 格式转换符 %f %e %g 有什么区别

#include<stdio.h>
#include<stdlib.h>
#define RANDOM(num) rand()%(num)
#define s(r) (r)*(r)*3.1415926
#define max(a,b) ((a)>(b)?(a):(b))
int main()
{
int a,b,r;
double s;
a=RANDOM(10);
b=RANDOM(10);
printf("%d\n%d\n",a,b);
if(a||b)
{

printf("%-4d%-4d\n",a,b);
r=max(a,b);
s=s(r);
printf("%g\n",s);
}
return 0;
}

不知道%g转换成什么

%g   以%f%e中较短的输出宽度输出单,双精度实数(看看这个例子,希望你明白)

main()

{

 double a=1000000000; 

 double b=123.456; 

 printf("%e\n",a);

 printf("%f\n",a);

 printf("%g\n",a);

 printf("%e\n",b);

 printf("%f\n",b);

 printf("%g\n",b);

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-16

%f   表示按浮点数的格式输出

%e  表示按指数形式的浮点数的格式输出

%g  表示自动选择合适的表示法输出


示例程序如下:

#include<stdio.h>
void main()
{
    float f = 3.1415926;
    printf("%f\n", f);   // 输出3.141593    
    printf("%e\n", f);   // 输出3.141593e+000
    printf("%g\n", f);   // 输出3.14159
}

第2个回答  2018-01-23
不能用void main(),void main()不是c99标准
相似回答