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