Как можно составить хорошее объяснение того, почему следующий код некорректен, поскольку автор пытается писать код C ++ декларативно, а не процедурно?
const double NEWTONS_PER_POUND = 4.448;
int main()
{
double pounds, newtons;
pounds = newtons/NEWTONS_PER_POUND; /* pounds equals 'unassigned variable'/4.448 */
newtons = 10.0;
cout << pounds << endl; /* a big number, not 10.0/4.448 */
return 0;
}
Автор ожидал, что cout
отобразит правильный расчет, но вместо этого получит "сумасшедшее число".
Я бы объяснил это как "C ++ является процедурным, и, следовательно, во время объявления
pounds = newtons/NEWTONS_PER_POUND;
newtons
не было присвоено значение.
Какие-нибудь лучшие предложения? Или объяснение того, почему C ++ недостаточно «умен», чтобы вести себя так, как ожидал пользователь?