在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
在扫描数字时的行为均相同。