在C中,当用scanf读入float变量时,格式说明符%f,%e,%g,%E和%G是否有任何区别?也就是说,代码片段的行为

float x;
scanf("%<one of f, e, g, E, G>", &x);

曾经取决于说明者的选择吗?

我首先认为%f只能正确解释十进制表示法,而%e只能正确解释科学计数法,但是在我的系统上,每种情况下它们都可以正常工作。但是也许我的系统是自由的...

我在书中或网络上找不到任何明确的声明...

最佳答案

上面的答案是针对C++的,但对于C也是如此。

"Final version of the C99 standard with corrigenda TC1, TC2, and TC3 included, formatted as a draft"中的“7.19.6.2 fscanf函数”(链接从http://en.wikipedia.org/wiki/C99复制):



因此,如您所见,%f, %e, %g, %E, %G在扫描数字时的行为均相同。

10-08 11:54