控制台输出说明

Explanation for console output

我写这段代码是为了显示处理浮点数时的错误:

#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 = $f\n", 0.1, 0.2, 0.1 + 0.2);
    printf("%f + %f = $f\n", 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 = $f\n", 0.1, 0.2, 0.1 + 0.2);
printf("%f + %f = $f\n", 0.1, 0.3, 0.1 + 0.2);

让我感到困惑,因为等号后的输出是 $f,我无法向自己解释。你能给我解释一下那是什么意思吗? 注:我在网上搜索了一下,没有找到。

printf 正在打印 $f,从字面上看,它不将其识别为有效的说明符,除了 printf 说明符之外,没有其他内容流只需要 2 个浮点数,但你有 3 个参数,第三个不会被打印。

如果你确实想打印第三个参数,从你的代码来看,它是有道理的,那么它是一个错字,它应该是 %f

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