Почему использование float вместо int дает мне разные результаты, когда все мои входные данные являются целыми числами? - PullRequest
0 голосов
/ 28 марта 2019
void main( )
{
    int no = 123;
    while(no)
    { 
        no /= 10;
        printf("%d", no % 10);
    }
}

Результаты:

  • 2
  • 210
  • 21
  • 213

Почемуиспользование float вместо int дает мне разные результаты, когда все мои входные данные являются целыми числами?

1 Ответ

0 голосов
/ 12 апреля 2019

Если вы измените int no на float no, вы также должны изменить формат printf на %f, иначе поведение будет неопределенным.Кроме того, оператор % не определен для float аргументов, поэтому какой код вы действительно пытались получить для своего наблюдения?

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

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