Следующий оператор C во время отладки показывает значение k как -2.Зачем?На самом деле, это должно показать -2.000000 - PullRequest
0 голосов
/ 24 февраля 2019
#include <stdio.h>

int main(void)
{
    int j = -5;
    float k = j / 2;
    printf("%d\n", j % 2);
    printf("%1.1f\n", k);
}

Приведенный выше код при отладке показывает значение k как -2.Зачем?На самом деле, он должен показывать -2.000000.

1 Ответ

0 голосов
/ 24 февраля 2019

-2 и -2.000000 - это одно и то же значение.Это просто вопрос того, сколько цифр точности напечатано.

Если вы не укажете спецификатор точности при печати k, он будет использовать значение по умолчанию 6:

printf("%f\n", k);

Вывод:

-2.000000

Что касается GDB, при печати float будет отображаться только необходимое количество значащих цифр.Поскольку значение -2 может быть представлено точно, оно не показывает никаких дополнительных цифр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...