Когда использовать% d и% f в C? - PullRequest
1 голос
/ 24 марта 2019

Я новичок в программировании на C, но приличный в Java, мой вопрос: когда мы используем% d и% f? В какой ситуации? Например, основываясь на приведенном ниже блоке кода, если меня попросили взять (int) a * (float) y, могу ли я считать его% d или% f?

#include <stdio.h>

int main()
{
    int a = 2;
    float y= 1.5;
    printf("%d \n", a*y);  //do I take this?
    printf("%f", a*y);    //do I take this?
    return 0;
}

Выход:

745417384
3.000000

Ответы [ 4 ]

4 голосов
/ 24 марта 2019

Для printf, %d ожидает, что соответствующий аргумент будет иметь тип int, где %f ожидает, что он будет иметь тип float или double.

Результатом арифметического выражения с участием и int и float будет float, поэтому в этом случае вам нужно будет использовать %f.

2 голосов
/ 24 марта 2019

‘% d’, ‘% i’ : печать целого числа в виде десятичного числа со знаком. Смотрите Integer Conversions, для подробностей. «% D» и «% i» являются синонимами для вывода, но различаются при использовании с scanf для ввода (см. Таблицу входных преобразований).

‘% f’ : вывод числа с плавающей запятой в обычной (с фиксированной запятой) записи. Для получения подробной информации см. Преобразования с плавающей точкой.

источник: https://www.gnu.org/software/libc/manual/html_node/Table-of-Output-Conversions.html#Table-of-Output-Conversions

Возможны и другие преобразования

1 голос
/ 24 марта 2019

В этом случае вы должны использовать% f, иначе вы получите странный ответ, как вы видели в своем коде

0 голосов
/ 24 марта 2019

Правило ясно для любого языка: если у вас есть операция, включающая число с плавающей точкой, результат всегда должен рассматриваться как число с плавающей точкой.Так что вы должны использовать% f

...