【问题标题】:Printing out array element打印出数组元素
【发布时间】:2013-11-13 04:52:51
【问题描述】:

所以我有这个代码

double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};

printf("%d", balance[0]);

所以我希望打印出数组的第一个元素,即 1000.0。但是,出于某种奇怪的原因,它继续打印 0。有人知道为什么吗??

【问题讨论】:

  • 我使用了 %f 格式说明符,它给了我 '0.00000'
  • 改用printf("%0.1lf\n", balance[0]);。这是 ideone 上的your code。问题出在其他地方
  • 和以前一样的输出
  • 现在可以使用了。我将数组更改为 int 数组并忘记将其更改回 double

标签: c arrays printf


【解决方案1】:

来自 C11 草案

§7.16.1.1/2

...if type is not compatible with the type of the actual next argument 
(as promoted according to the default argument promotions), the behavior 
is undefined, ....

您需要使用正确的格式说明符来打印变量的值。

【讨论】:

  • +1,终于有人说出了观察到的行为的正确原因。
【解决方案2】:

您正在使用signed int 的格式说明符来打印double
使用这个-

printf("%f", balance[0]);

【讨论】:

    【解决方案3】:

    要打印double,请使用%f

    printf("%f", balance[0]);
    

    您可能会混淆%d 中的d 表示double,但实际上它表示decimal

    【讨论】:

    • 打印出 0.00000
    • @user2930701 请参阅ideone.com/lU2h8I 并再次检查您的代码。顺便说一句,要打印小数点后一位数,如1000.0,请使用%.1f
    【解决方案4】:

    要打印不能使用 %d 的双精度值,您应该使用 %f

    double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
    
    printf("%f", balance[0]);
    

    【讨论】:

      【解决方案5】:

      使用 %f 代替 %d。也可以将 double 替换为 float。

      浮动余额[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};

      printf("%f", balance[0])

      1. %d 用于整数。
      2. %f 用于浮点数。

      【讨论】:

        【解决方案6】:

        您在代码的 printf 语句中使用了错误的格式说明符。您正在尝试使用 %d 格式说明符打印浮点值,这会导致意外输出。

        使用 %f 代替 %d 一切都会好起来的,像这样:

        double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
        printf("%f", balance[0]);
        

        输出:

        1000.000000
        

        【讨论】:

          猜你喜欢
          • 2011-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多