% g 是 C 语言格式化输出中的一个占位符,用于以一种更加紧凑和可读的方式输出浮点数。它可以在科学计数法和普通小数之间自动切换,根据浮点数的大小选择最佳的格式化方式。

具体而言,如果浮点数的指数小于-4或者大于等于精度限制,则会自动使用科学计数法。否则,该浮点数会按照普通小数的方式输出,去掉末尾的 0 并不显示多余的小数位。

下面是一个示例代码:

#include <stdio.h>

int main() {
    float f = 123456.789;
    double d = 0.00000123456;

    printf("%g\n", f);  // 输出 1.23457e+05

    printf("%g\n", d);  // 输出 1.23456e-06

    return 0;
}

在这个示例中,我们使用了 % g 占位符来输出两个浮点数。第一个浮点数是 123456.789,它的指数大于精度限制,因此使用了科学计数法,输出结果是 1.23457e+05。第二个浮点数是 0.00000123456,它的指数小于-4,因此也使用了科学计数法,输出结果是 1.23456e-06。