-1
float x;
x = 1.00000;
printf("1: %d\n", x);
printf("2: %f", x);
Этого кодом произвести следующий вывод:различных значений с% D и% F с тем же варом
1: 0
2: 1.00000
Почему 1:% d не равен 1, но печатает 0?
Использование '% d' с аргументом с плавающей запятой неверно; поведение не определено. Не делай этого. –
Если вы используете неправильные спецификаторы типов, вы входите в какую-либо страну с неопределенным поведением. Таким образом, вопрос не имеет большого смысла, он зависит от системы и компилятора и может меняться от запуска до запуска. – luk32
Прямой ответ на ваш вопрос, '% d' предназначен для печати целых чисел, а не для плавающих. Поэтому он интерпретирует первую часть 'x' в памяти как целое число, которое бывает' 0'. Внутреннее представление для float длиннее целого. – lurker