c-控制台输出的说明



我写这段代码是为了在处理浮点数时显示不准确之处:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main() {
float sum1 = 0, sum2 = 0, sum3 = 0;
double sum4 = 0, sum5 = 0, sum6 = 0;
printf("%f + %f = $fn", 0.1, 0.2, 0.1 + 0.2);
printf("%f + %f = $fn", 0.1, 0.3, 0.1 + 0.2);
for (float i = 1; i <= 10000; i++) {
sum1 = sum1 + (1 / i); 
}
for (double i = 1; i <= 10000; i++) {
sum4 = sum4 + (1 / i);
}
for (float i = 1; i <= 100000; i++) {
sum2 = sum2 + (1 / i);
}
for (double i = 1; i <= 100000; i++) {
sum5 = sum5 + (1 / i);
}
for (float i = 1; i <= 1000000; i++) {
sum3 = sum3 + (1 / i);
}
for (double i = 1; i <= 1000000; i++) {
sum6 = sum6 + (1 / i);
}
printf("%f t %lf n%f t %lf n%f t %lf n", sum1, sum4, sum2, sum5, sum3, sum6);
return 0;
}

尤其是部分

printf("%f + %f = $fn", 0.1, 0.2, 0.1 + 0.2);
printf("%f + %f = $fn", 0.1, 0.3, 0.1 + 0.2);

我很困惑,因为等号后的输出是$f,我无法向自己解释。你能向我解释一下这句话的意思吗?注:我在网上搜索了一下,没有发现任何相关信息。

printf正在打印$f,实际上,它不将其识别为有效的说明符,除了printf说明符流只接受2个浮点值,但您有3个参数之外,第三个参数将不会打印。

如果你确实想打印第三个参数,看看你的代码,这是有意义的,那么这是一个拼写错误,它应该是%f

正如chqrlie在下面指出的,你也可能打错了键,因为$%可能并排在你的键盘上。

最新更新