获取错误:格式指定类型' int'但是论证的类型是' double'

时间:2015-07-31 14:43:46

标签: c printf

我不知道为什么这不会编译。任何的想法?

这是非常直接的,我已经花了很长时间看着它,并且无法弄清楚它有什么问题。

#include <stdio.h>
#include <stdlib.h>

void euroToDollar(double euro);

int main() {
    double europrice1 = 1.00;

    euroToDollar(europrice1);
    return 0;
}

void euroToDollar(double euro){

    double dollar = euro * 1.11;

    printf("EUR%.2d = USD%.2d" ,euro, dollar);
    return;
}

错误消息:

Basic.c:24:39: error: format specifies type 'int' but the argument has type
  'double' [-Werror,-Wformat]
printf("EUR%.2d = USD%.2d" ,euro, dollar);
                     ~~~~         ^~~~~~
                     %.2f
 2 errors generated.

2 个答案:

答案 0 :(得分:5)

在您的代码中,您需要更改

printf("EUR%.2f = USD%.2f", euro, dollar);

,

注意两次更改

  1. 根据CallCancelled语法的要求添加了double
  2. %f应使用Template.addProduct.helpers({ warmerselected: function(){ return Session.get("warmerselected"); } }); 格式说明符打印。使用错误类型的参数会调用printf()

答案 1 :(得分:2)

你错过了一个逗号。

printf("EUR%.2f = USD%.2f" euro, dollar);

应该是

printf("EUR%.2f = USD%.2f", euro, dollar);