я проходил через рамку правила вопросов и все, а затем получил фрагмент кода, ниже:Каким будет его выход и почему?
#include <stdio.h>
int main()
{
int x = 1, y = 2, z = 3;
printf(" x = %d, y = %d, z = %d \n", x, y, z);
{
int x = 10;
float y = 20;
printf(" x = %d, y = %f, z = %d \n", x, y, z);
{
int z = 100;
printf(" x = %d, y = %f, z = %d \n", x, y, z);
}
}
return 0;
}
Если изменить последнюю печать на:
printf("x = %d, y = %d, z = %d \n", x, y, z);
я получаю следующий вывод, который я не понимаю: (Ideone link)
x = 10, y = 0, z = 1077149696
Таким образом, могли бы вы объяснить, почему г печати это значение?
Мое предположение, потому что '' printf' использует vargs', и ожидать, что '% d' для 'float y', он считывает первые 4 байта float, который равен 0, и оставляет последние 4 байта в следующем'% d', который равен z, поэтому z имеет неопределенное значение, напечатанное. – texasbruce
Этот код не идентичен примеру в ideone. – Galik
-1 Этот код полностью работает и не совпадает с кодом в идеоне, из которого вы взяли результаты. Код ideone имеет ошибку. – Galik