次のコードが正しくない理由について、作成者が手続き的にではなく宣言的に 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++ が、ユーザーが誤って期待した動作を実行するほど「スマート」ではない理由を説明しますか?