Каков выходной сигнал?Формат строки в printf
main()
{
float a=4;
int i=2;
printf("%f %d",i/a,i/a);
printf("%d %f",i/a,i/a);
}
Ответ Я получаю это: 0.500000 00 0.000000
Причина: В первом printf
, %f=i/a=2/4=int/float
поэтому неявное приведение делается и i
становится float
, которая вызывает результат float
(т.е. 0.500000).
По умолчанию точность поплавка равна 6, после десятичной цифры 6 цифр, а затем %d=i/a=2 /4=0.500000
, но %d
формат строки печатать только целое число, поэтому 0 печатается и после десятичных значений отбрасывается.
printf
с %d=i/a=2/4
печать 0 имеет ту же концепцию; однако %f=i/a=2/4=0.000000
последний результат я не понял.
Почему бы не попробовать? [Ideone.com] (http://ideone.com/) Вы можете попробовать всевозможные вещи, даже если не перед ПК, загруженным всем необходимым для этого ... – ppeterka
Можете ли вы точно определить, что это такое что вы не понимаете? – nhgrif
«неявное литье» - это оксюморон. Кастинг является явным по определению. Слово, которое вы ищете, - это «неявное преобразование». –