C语言中,printf()函数的%后面可以接这些参数:
%[flags] [width] [.precision] [{h | l | I64 | L}]type
flags是格式化输出的显示方式,width指定最少的输出字符个数,precision指定最大的输出字符个数,或者浮点数的输出精度,type指定输出类型。
根据你的情况,printf("%.7g\n",123.56789),则是输出七位有效数字的double型,因此123.56789被四舍五入到123.5679 ;
而printf("%g\n",123.56789)没有指定精度,所以采用默认值6,所以输出六位有效数字的123.568
你还可以试试这个:printf("%13.7g\n",123.56789)看看结果怎样?
查看MSDN可以得到更多的帮助^_^
参考资料:MSDN