人们如何能够很好地解释为什么以下代码不正确,因为作者试图以声明方式而不是程序性地编写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;
尚未为牛顿分配值.
解决方法
告诉作者
pounds = newtons/NEWTONS_PER_POUND;
命令cpu到
>取地址上的值称为“牛顿”
>在地址处取值“NEWTONS_PER_POUND”
>分开他们
>将结果存储在称为“磅”的地址
他正在寻找的东西很可能是命令式的功能:
double newtons_to_pounds(double newtons) { return newtons/NEWTONS_PER_POUND; } ... newtons = 10.0; cout << newtons_to_pounds(newtons) << endl; /* a big number,not 10.0/4.448 */ return 0;