代码之家  ›  专栏  ›  技术社区  ›  Alex

输出浮点数组值不能按预期工作[关闭]

  •  0
  • Alex  · 技术社区  · 7 年前

    首先,如果这是一个很小的问题,我很抱歉。我是新来的 C++ 我正在做非常基本的测试。我查阅了一些关于指针和数组的教程。尽管如此,我还是有一个问题,不管我怎么努力都不会消失。

    问题是,在我将值设置为 float 类型数组-所有值都被读取为0(零)。当完全相同的操作 int 数组,然后正确读取值。

    代码:

    int N = 3;
    
    int* x = new int[N];
    float* y = new float[N];
    
    for (int i = 0; i < N; ++i) {
        x[i] = (int)i;
        y[i] = (float)i;
    }
    
    for (int i = 0; i < N; ++i) {
        printf("%d\n", x[i]);
        printf("%d\n", y[i]);
    }
    

    输出:

    如何将0 1和2值正确分配给 浮动 类型大小数组 3 然后在循环中读取这些值?

    2 回复  |  直到 7 年前
        1
  •  3
  •   user2371524    7 年前

    这是错误的:

    printf("%d\n", y[i]);
    

    %d 期望 int 但是你通过了 float -gt; 未定义的行为 任何事情都可能发生。使用 %f 相反。

    在C++中,考虑使用IO流代替C STDIO函数。

        2
  •  2
  •   Kaldrr    7 年前
    for (int i = 0; i < N; ++i) {
    printf("%d\n", x[i]);
    printf("%d\n", y[i]);
    }
    

    %d in printf 意味着你要打印一个整数,你应该用%f代替。

    更好的是,使用STD::CUT,所以你不必担心这些事情。

    在文件顶部添加 #include <iostream>

    你可以写

    std::cout<<x[i]<<'\n';
    std::cout<<y[i]<<'\n';